我有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}
最佳答案
您可以简单地使用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));
关于java - 按对象分组属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56200563/