Java 8: تحويل List<V> إلى Map<K, V> باستخدام Stream API
مرحباً بالجميع! بدأت في تعلم Java 8 وواجهت مشكلة تبدو بسيطة لكنني لا أستطيع حلها. لدي قائمة من الكائنات `Person`:
```java
public class Person {
private int id;
private String name;
private int age;
// المُنشئ، getters و setters
}
```
أحتاج إلى تحويل `List` إلى `Map`، حيث يكون المفتاح هو `id` والقيمة هي الكائن `Person` نفسه. سابقاً (قبل Java 8) كنت أفعل ذلك عبر حلقة:
```java
List list = Arrays.asList(
new Person(1, "Alice", 30),
new Person(2, "Bob", 25),
new Person(3, "Charlie", 35)
);
Map map = new HashMap<>();
for (Person p : list) {
map.put(p.getId(), p);
}
```
لكنني سمعت أنه في Java 8 يمكن فعل ذلك بشكل أجمل باستخدام lambdas و streams. جربت كتابة شيء مثل:
```java
Map map = list.stream().collect(Collectors.toMap(person -> person.getId(), person -> person));
```
لكن IDE يشتكي...