Collections 如何使用Java流api将集合的属性检索为字符串集合
我有一个类别列表,其中包含许多属性,如代码、名称、描述、超级类别、productlist等。现在我想迭代它,检索每个类别的代码,并将其存储在字符串列表中。这就是我用老办法做的。我想知道是否可以用Java8流以更好、更干净、更高效的方式实现这一点Collections 如何使用Java流api将集合的属性检索为字符串集合,collections,java-8,java-stream,Collections,Java 8,Java Stream,我有一个类别列表,其中包含许多属性,如代码、名称、描述、超级类别、productlist等。现在我想迭代它,检索每个类别的代码,并将其存储在字符串列表中。这就是我用老办法做的。我想知道是否可以用Java8流以更好、更干净、更高效的方式实现这一点 List<Category> categories = categoryService.getCategoriesForProductCode(productCode); List<String> categoryCodes =
List<Category> categories = categoryService.getCategoriesForProductCode(productCode);
List<String> categoryCodes = new ArrayList<>();
if(CollectionUtils.isNotEmpty(categories)){
for(Category cat : categories){
categoryCodes.add(cat.getCode);
}
}
List categories=categoryService.getCategoriesForProductCode(productCode);
List categoryCodes=new ArrayList();
if(CollectionUtils.isNotEmpty(类别)){
对于(类别类别:类别){
categoryCodes.add(cat.getCode);
}
}
您可以这样做
categoryCodes = categories.stream()
.map(category->catgory.getCode()) // .map(Category::getCode)
.collect(Collectors.toList());
@Hadi,更具体地说是操作
.collect(Collectors.toList())
应更改为.collect(Collectors.toCollection(ArrayList::new))因为前者不能保证返回列表的类型、易变性、序列化性或线程安全性。只想在OP正在做的时候提到这一点List categoryCodes=new ArrayList()
在其示例代码段中。