小编Bha*_*ngi的帖子

使用java 8流修改列表中对象的属性值

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流实现相同的行为?

java-8 java-stream

38
推荐指数
4
解决办法
8万
查看次数

为什么构建器应该是静态内部类?

我非常了解构建模式.在Joshua Bloch的有效Java中,第2项中描述的构建器模式也已经完成了.

在这里,我的问题是 - 在实例化的类中保留构建器类是否有任何特定的好处?

我们也可以将它作为单独的构建器类并执行相同的操作.

请具体说明您的答案.我已经知道内部类可以访问构建类的私有成员以及所有这些.

java design-patterns

12
推荐指数
2
解决办法
4953
查看次数

标签 统计

design-patterns ×1

java ×1

java-8 ×1

java-stream ×1