jdk8使用lambda將map轉換爲新map


方式1 

 Map<String, Column> newColumnMap= new HashMap<>();
    originalColumnMap.entrySet().stream().forEach(x -> newColumnMap.put(x.getKey(), new Column(x.getValue())));

方式2

public class Defensive {

  public static void main(String[] args) {
    Map<String, Column> original = new HashMap<>();
    original.put("foo", new Column());
    original.put("bar", new Column());

    Map<String, Column> copy = original.entrySet()
        .stream()
        .collect(Collectors.toMap(Map.Entry::getKey,
                                  e -> new Column(e.getValue())));

    System.out.println(original);
    System.out.println(copy);
  }

  static class Column {
    public Column() {}
    public Column(Column c) {}
  }
}

 項目中實際使用案例

//目前得到的map是 Map<String, StaffModel>,需要的map是Map<String, StaffVO>
//需要處理map,將StaffModel轉換爲StaffVO
Map<String, StaffModel> map =  staffService.listStaffsByIds(idMap);
 if(map == null || map.isEmpty()) return null;
 
 return map.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey,
                e -> BeanCopierUtil.copy(e.getValue(),StaffVO::new,StaffVO.class)));

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章