我们如何转换列表
示例:列表
这里的名称和名称都是LinkedHashmap键。如果你在IDE中复制下面的片段,你可以更好地理解这个列表
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);
需要转换以上列表
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)]
使用streams,您可以使用以下代码,前提是Employe类有一个具有此签名的构造函数:public Employe(字符串名称,字符串名称)。
List<Employe> customList= list.stream()
.flatMap(map -> map.entrySet().stream())
.map(entry -> new Employe(entry.getKey(), entry.getValue()))
.toList();
在源列表上创建一个流。并使用映射到键"name"
和"指定"
的值将列表中的每个映射转换为员工
的实例。
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'}
注:
问题内容: 我想使用Java 8技巧在一行中执行以下操作。 给定此对象定义: 和a ,我想得到a ,它是第一个列表中所有s对象的列表- 顺序相同。 我可以使用Java中的循环来做到这一点,但我相信Java8中应该有一个单行lambda可以做到这一点。我无法在线找到解决方案。也许我没有使用正确的搜索词。 有人可以为这种转换建议一个lambda或另一种线吗? 问题答案: 这应该可以解决问题: 也就是说
我可以在Java中使用循环来实现这一点,但我认为在Java8中应该有一个一行程序lambda来实现这一点。我无法在网上找到解决方案。也许我没有使用正确的搜索词。 有人能为这个转换提出一个lambda或另一个一行程序吗?
我有以下格式的列表 如何根据其键找到值,例如我需要第3行的名称...以及如何根据行对其进行排序
我正在查看的文档,我看到了方法,但无法直接转到 是否有方法将转换为?
我有两个包含该类对象的列表: 我想通过学生比较一下那两个列表中的对象。我得比较一下列表然后得到下面的数据 我需要创建一个新列表,其中包含中存在但不在中的 对象 我需要创建一个新列表,其中包含那些对象,这些对象存在于中,但不存在于中 我需要创建一个新列表,其中包含使用java8流出现在两个列表中的对象 我尝试使用下面的代码 查找获得TC的学生(存在于列表1中但不存在于列表2中) 查找新的许可(存在于
如何使用stream转换下面的代码而不使用for each循环。 getAllSubjects()返回所有列表,每个主题都有。所有列表应合并为。 需要从中获取 对象模型: