gpt4 book ai didi

java - 如何使用流将 java bean 列表转换为另一个 bean 列表

转载 作者:行者123 更新时间:2023-12-02 13:07:20 30 4
gpt4 key购买 nike

我有如下的 bean

public class CleanPermission {

private int id;

private int objectId;

private boolean visible;
private boolean order;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public int getObjectId() {
return objectId;
}

public void setObjectId(int objectId) {
this.objectId = objectId;
}

public boolean isVisible() {
return visible;
}

public void setVisible(boolean visible) {
this.visible = visible;
}

public boolean isOrder() {
return order;
}

public void setOrder(boolean order) {
this.order = order;
}

}

public class Permission {

private int id;

private AppPermission appPermission;

private int objectId;

private boolean enabled;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public AppPermission getAppPermission() {
return appPermission;
}

public void setAppPermission(AppPermission appPermission) {
this.appPermission = appPermission;
}

public int getObjectId() {
return objectId;
}

public void setObjectId(int objectId) {
this.objectId = objectId;
}

public boolean isEnabled() {
return enabled;
}

public void setEnabled(boolean enabled) {
this.enabled = enabled;
}

}

在CleanPermission.java中可见,顺序是指Permission.java中的AppPermission的权限

我将从服务器获取 CleanPermission 列表(列表)。我想根据权限类型将 CleanPermissions 列表转换为列表(可见创建单独的 Permission 对象)。

目前我正在进行如下转换。但我想使用 java 流来转换它。因此,我需要帮助来使用 java 流进行转换。

public List<Permission> get(List<CleanPermission> cleanPermissions) {
List<Permission> permissions = new ArrayList();
Permission permission;
for (CleanPermission cleanPermission : cleanPermissions) {
permission = new Permission();
permission.setAppObjectType(cleanPermission.getAppObjectType());
permission.setEnabled(cleanPermission.isVisible());
permission.setAppPermission(new Permission(){{
setId(1);
}});
permissions.add(permission);
permission = new Permission();
permission.setObjectId(cleanPermission.getObjectId());
permission.setEnabled(cleanPermission.isOrder());
permission.setAppPermission(new Permission(){{
setId(2);
}});
permissions.add(permission);
}
if (!permissions.isEmpty()) {
System.out.println(permissions.size());
}
return permissions;

}

示例数据:

List<CleanPermission> cleanPermissions = new ArrayList() {
{
add(new CleanPermission() {
{
setVisible(true);
setOrder(false);
setObjectId(1);
}
});
add(new CleanPermission() {
{
setVisible(false);
setOrder(false);
setObjectId(2);
}
});
add(new CleanPermission() {
{
setVisible(true);
setOrder(true);
setObjectId(3);
}
});
}
};

最佳答案

有很多种方法可以使用流 API 来重构它。首先我建议封装转换方法。

public List<Permission> convert(CleanPermission cp) {
List<Permission> permissions= new ArrayList<>()
permission = new Permission();
permission.setAppObjectType(cleanPermission.getAppObjectType());
permission.setEnabled(cleanPermission.isVisible());
permission.setAppPermission(new Permission(){{
setId(1);
}});
permissions.add(permission);
permission = new Permission();
permission.setObjectId(cleanPermission.getObjectId());
permission.setEnabled(cleanPermission.isOrder());
permission.setAppPermission(new Permission(){{
setId(2);
}});
permissions.add(permission);
return permissions;
}

以及处理

cleanPermissions.stream().map(this::convert)
.flatMap(Collection::stream).collect(Collectors.toList());

cleanPermissions.stream().map(this::convert)
.collect(ArrayList::new, ArrayList::addAll, ArrayList::addAll);

关于java - 如何使用流将 java bean 列表转换为另一个 bean 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44094142/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com