我有Inventory
的列表:
class Inventory {
String refCode;
int min;
int max;
// getters and setters
}
refCode min max
------- ---- ---
DOUBLE 2 2
DOUBLE 2 2
TWIN 1 2
SINGLE 3 4
现在,我想使用min
属性进行分组,以便我的输出像这样:
Map<String, int> output;
{DOUBLE=2, TWIN=1, SINGLE=3}
答案 0 :(得分:3)
您可以简单地使用Collectors.toMap()
来实现此目的:
Map<String, Integer> result = list.stream()
.collect(Collectors.toMap(Inventory::getRefCode, Inventory::getMin, (a, b) -> a));
如果您有多个键,这将保留第一个值。如果要保留最后一个,只需使用(a, b) -> b
而不是(a, b) -> a
。
如果您需要项目与列表中的顺序相同,只需使用LinkedHashMap
:
Map<String, Integer> result = list.stream()
.collect(Collectors.toMap(Inventory::getRefCode, Inventory::getMin, (a, b) -> a, LinkedHashMap::new));