我经常发现自己处于需要Map从Set或者创建对象的情况List.键通常是一些String或Enum等,值是一些新数据集中在一起的新对象.对我来说,这样做的通常方法是首先创建Map<String, SomeKeyValueObject>,然后迭代我进入的Set或List并改变我新创建的地图.
如下例所示:
class Example {
Map<String, GroupedDataObject> groupData(final List<SomeData> list){
final Map<String, GroupedDataObject> map = new HashMap<>();
for(final SomeData data : list){
final String key = data.valueToGroupBy();
map.put(key, GroupedDataObject.of(map.get(key), data.displayName(), data.data()));
}
return map;
}
}
class SomeData {
private final String valueToGroupBy;
private final Object data;
private final String displayName;
public SomeData(final String valueToGroupBy, final String displayName, final Object data) {
this.valueToGroupBy = valueToGroupBy;
this.data = data;
this.displayName = displayName;
}
public …Run Code Online (Sandbox Code Playgroud)