的GROUPBY結果我有水果的清單包含姓名和身份證應用操作上流
List<Fruit> fruitList = Arrays.asList(new Fruit("apple", 1), new Fruit("orange", 2), new Fruit("orange", 3));
我想和名_ID重命名的水果名稱只有重複的水果名稱存在就像在我的名單橙色的情況下,將重命名爲orange_2和orange_3,但蘋果將保持蘋果。 如何以單流表達方式做到這一點。
,我想出瞭解決的辦法是
Map<String, List<Fruit>> fruitMap = fruitList.stream().collect(Collectors.groupingBy(Fruit::getName));
Set<Entry<String, List<Fruit>>> entry = fruitMap.entrySet();
for (Entry<String, List<Fruit>> en : entry) {
List<Fruit> fruit = en.getValue();
if (fruit.size() > 1) {
fruit.stream().map(d -> {
d.setName(d.getName() + "_" + d.getId());
return d;
}).collect(Collectors.toList());
}
}
}
但這是遠遠不止一個流表達。
謝謝,但是,這仍然是2個表達式,這不是我所看到的。 –