【发布时间】:2014-07-18 09:19:11
【问题描述】:
试图弄清楚如何在我的代码中有效地使用新的 Java 8 功能 .stream()。
这是我的一般代码
List<Item> list = db.query(sqlStatement, (rs, i) -> new Item(rs));
Map<String, List<Item>> itemsByName = new HashMap<>();
for (Item m : list) {
if (!itemsByName.containsKey(m.getName())) {
ArrayList<Item> items = new ArrayList<>();
items.add(m);
itemsByName.put(m.getName(), items);
} else {
itemsByName.get(m.getName()).add(m);
}
}
由此(1)
List<Item> list = db.query(sqlStatement, (rs, i) -> new Item(rs));
我得到的项目列表如下:
列表(0):名称1:值1
列表(1):名称1:值2
列表(2):名称2:值1
list(3): Name3:Value3
由此(2)
Map<String, List<Item>> itemsByName = new HashMap<>();
for (Item m : list) {
if (!itemsByName.containsKey(m.getName())) {
ArrayList<Item> items = new ArrayList<>();
items.add(m);
itemsByName.put(m.getName(), items);
} else {
itemsByName.get(m.getName()).add(m);
}
}
我想得到:
MapKey(Name1): List{Name1:Value1, Name1:Value2}
MapKey(Name2): List{Name2:Value1}
MapKey(Name3): List{Name3:Value3}
如何使用stream()重写代码(2)得到同样的结果?
【问题讨论】:
标签: java collections lambda java-8 java-stream