我们如何使用 Java 8 Streams 将 List
示例:列表
这里的name和designation都是LinkedHashmap的key。如果您在 IDE 中复制以下代码片段,您可以更好地理解此 List
List<LinkedHashMap> list = new ArrayList<>();
LinkedHashMap<String, String> linkedHashMap1 = new LinkedHashMap<>((Map.of("name","David", "designation","Senior Software Engineer")));
LinkedHashMap<String, String> linkedHashMap2 = new LinkedHashMap<>((Map.of("name","Alex", "designation","Software Engineer")));
LinkedHashMap<String, String> linkedHashMap3 = new LinkedHashMap<>((Map.of("name","Jessi","designation","Lead")));
LinkedHashMap<String, String> linkedHashMap4 = new LinkedHashMap<>((Map.of("name","Martin","designation","Manager")));
list.add(linkedHashMap1);
list.add(linkedHashMap2);
list.add(linkedHashMap3);
list.add(linkedHashMap4);
System.out.println(list);
需要将上面的 List
Class Employee {
String name;
String designation;
}
预期输出:
[Employee(name = David, designation = Senior Software Engineer),
Employee(name = Alex, designation = Software Engineer),
Employee(name = Jessi, designation = Lead),
Employee(name = Martin, designation = Manager)]
最佳答案
在源列表上创建流。并使用映射到键 "name"
和 "designation"的值将列表中的每个 map 转换为
.Employee
的实例
public static void main(String[] args) {
List<Map<String, String>> source = List.of(
Map.of("name","David", "designation","Senior Software Engineer"),
Map.of("name","Alex", "designation","Software Engineer"),
Map.of("name","Jessi","designation","Lead"),
Map.of("name","Martin","designation","Manager"));
List<Employee> result = source.stream()
.map(map -> new Employee(map.get("name"), map.get("designation")))
.collect(Collectors.toList());
result.forEach(System.out::println);
}
输出
Employee{name='David', designation='Senior Software Engineer'}
Employee{name='Alex', designation='Software Engineer'}
Employee{name='Jessi', designation='Lead'}
Employee{name='Martin', designation='Manager'}
注意:
- 将对象存储为 map 并不是一个好的做法。在您的示例中,没有什么可以帮助您避免拼写错误,您将得到
null
而不是属性值。 - 不要删除一般信息。
关于java - 如何使用 Java 8 将 LinkedHashMap 列表转换为自定义对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71761083/