使用java8流修改列表中对象的属性值 |
您所在的位置:网站首页 › java里的流 › 使用java8流修改列表中对象的属性值 |
我Fruit在arraylist中有一个对象列表,我想将fruitName修改为其复数名称.参考示例: @Data @AllArgsConstructor @ToString class Fruit { long id; String name; String country; } List 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我们有没有办法使用java8流实现相同的行为? 1> Sergii Lagut..: 如果您想创建新列表,请使用Stream.map方法: List newList = fruits.stream() .map(f -> new Fruit(f.getId(), f.getName() + "s", f.getCountry()) .collect(Collectors.toList())如果您想修改当前列表,请使用Collection.forEach: fruits.forEach(f -> f.setName(f.getName() + "s"))2> Apostolos..: 你可以使用forEach.根本没有流: fruits.forEach(fruit -> fruit.setName(fruit.getName() + "s"));3> Sriram..: 你可以peek用来做那件事. List newList = fruits.stream() .peek(f -> f.setName(f.getName() + "s")) .collect(Collectors.toList()); Peek方法只应用于调试.API注意:此方法主要用于支持调试,您希望在元素流经管道中的某个点时查看这些元素:参考:https://docs.oracle.com/javase/8/docs/api/java /util/stream/Stream.html#peek-java.util.function.Consumer- |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |