Mam listę obiektów Fruit
w tablicy array i chcę zmodyfikować fruitName na jej nazwę w liczbie mnogiej. Patrz na przykład:Modyfikowanie wartości właściwości obiektów na liście przy użyciu strumieni java 8
@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)]
Czy mamy jakikolwiek sposób, aby osiągnąć takie samo zachowanie przy użyciu java8 strumienie?
Jaki jest sens dodawania elementów do A Nowa lista? Ta lista jest identyczna z oryginalną listą. W przypadku pozostałych zadań nie potrzebujesz strumienia: 'fruits.forEach (fruit -> fruit.setName (fruit.getName() +" s ")). Nawiasem mówiąc, 'Lists.newArrayList()' nie ma przewagi nad 'nowym ArrayList <>()' – Holger