Java 8 流操作将 List<Permission> 转换为 Map<String, List<UserPermissionCategoryItem>>
本文将介绍如何使用 Java 8 的流操作将 List<Permission> 转换为 Map<String, List<UserPermissionCategoryItem>>,其中 Permission 对象包含 id、name 和 category 属性,UserPermissionCategoryItem 对象包含 id 和 name 属性。
你可以使用 Java 8 的流操作来实现此转换。以下是一个可能的实现:
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Permission> permissions = List.of(
new Permission(1, 'Permission 1', 'Category 1'),
new Permission(2, 'Permission 2', 'Category 1'),
new Permission(3, 'Permission 3', 'Category 2'),
new Permission(4, 'Permission 4', 'Category 2')
);
Map<String, List<UserPermissionCategoryItem>> resultMap = permissions.stream()
.collect(Collectors.groupingBy(Permission::getCategory,
Collectors.mapping(permission -> new UserPermissionCategoryItem(permission.getId(), permission.getName()),
Collectors.toList())));
System.out.println(resultMap);
}
}
class Permission {
private int id;
private String name;
private String category;
public Permission(int id, String name, String category) {
this.id = id;
this.name = name;
this.category = category;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getCategory() {
return category;
}
}
class UserPermissionCategoryItem {
private int id;
private String name;
public UserPermissionCategoryItem(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
在这个示例中,我们首先创建了一个包含 Permission 对象的 List。然后,我们使用流操作将 List<Permission> 转换为 Map<String, List<UserPermissionCategoryItem>>,其中 Permission 对象的 category 属性用作 Map 的键。我们使用 Collectors.groupingBy 方法将 Permission 对象按 category 进行分组,并使用 Collectors.mapping 方法将 Permission 对象转换为 UserPermissionCategoryItem 对象,并将其收集到一个 List 中。最后,我们打印输出了转换后的 Map。
这个例子演示了如何使用 Java 8 流操作来简化集合转换操作。通过使用流操作,代码变得更加简洁,易于理解和维护。
原文地址: https://www.cveoy.top/t/topic/o1Hi 著作权归作者所有。请勿转载和采集!