我Fruit在arraylist中有一个对象列表,我想将fruitName修改为其复数名称.参考示例:
@Data
@AllArgsConstructor
@ToString
class Fruit {
long id;
String name;
String country;
}
List<Fruit> fruits = Lists.newArrayList();
fruits.add(new Fruit(1L, "Apple", "India"));
fruits.add(new Fruit(2L, "Pineapple", "India"));
fruits.add(new Fruit(3L, "Kiwi", "New Zealand"));
Comparator<Option> byNameComparator = (e1, e2) -> e1.getName().compareToIgnoreCase(e2.getName());
fruits = fruits.stream().filter(fruit -> "India".equals(fruit.getCountry()))
.sorted(byNameComparator).collect(Collectors.toList());
List<Fruit> fruitsWithPluralNames = Lists.newArrayList();
for (Fruit fruit : fruits) {
fruit.setName(fruit.getName() + "s");
fruitsWithPluralNames.add(fruit);
}
System.out.println(fruitsWithPluralNames);
// which prints [Fruit(id=1, name=Apples, country=India), Fruit(id=2, name=Pineapples, country=India), Fruit(id=3, name=Kiwis, country=New Zealand)]
Run Code Online (Sandbox Code Playgroud)
我们有没有办法使用java8流实现相同的行为?
我非常了解构建模式.在Joshua Bloch的有效Java中,第2项中描述的构建器模式也已经完成了.
在这里,我的问题是 - 在实例化的类中保留构建器类是否有任何特定的好处?
我们也可以将它作为单独的构建器类并执行相同的操作.
请具体说明您的答案.我已经知道内部类可以访问构建类的私有成员以及所有这些.