我正在开发一个 Java 应用程序,我试图了解Stream概念是否对我的用例有用。
我正在尝试做一些类似于我在示例中发现的事情,但我的用例似乎更复杂。这是原始示例:
String[] profili = utente.getRuoli()
.stream().map(a -> "ROLE_" + a).toArray(String[]::new);
基本上它是从流开始创建一个数组。
按照我的情况。我有这个代表用户的主要用户DTO 类:
@Data
public class User {
private int id;
private String firstName;
private String middleName;
private String surname;
private char sex;
private Date birthdate;
private String taxCode;
private String eMail;
private String pswd;
private String contactNumber;
private Date createdAt;
private Set<Address> addressesList;
private Set<UserType> userTypes;
}
前面的 DTO 类包含表示用户类型集合的此字段(例如“ADMIN”、“READER”、“WRITER”等)。这是因为一个用户可以有多种类型:
private Set<UserType> userTypes;
这是用户类型结构:
@Data
public class UserType {
private int id;
private String typeName;
private String description;
Set<Operation> operations;
}
这个类还包含一个表示操作集合的字段(这是因为一个用户类型可以有多个可以在系统上执行的操作),这个字段:
Set<Operation> operations;
现在我问是否可以以与原始示例类似的方式使用流,以便创建包含所有用户类型的所有操作的数组。
是否可以?什么是聪明的解决方案?或者也许最好的方法是“旧样式”(将所有对象迭代到userTypes集中,然后将所有元素迭代到操作集中并手动添加到数组中?)。它会起作用,但是使用流的一个简洁优雅的解决方案可能是什么?(如果存在)