小编Che*_*toy的帖子

Java流:添加到地图但避免变异

我经常发现自己处于需要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)

java grouping dictionary java-8 java-stream

5
推荐指数
1
解决办法
320
查看次数

标签 统计

dictionary ×1

grouping ×1

java ×1

java-8 ×1

java-stream ×1