In Java 8 how do I transform a Map to another Map using a lambda?

前端 未结 7 1140
悲&欢浪女
悲&欢浪女 2020-12-02 14:01

I\'ve just started looking at Java 8 and to try out lambdas I thought I\'d try to rewrite a very simple thing I wrote recently. I need to turn a Map of String to Column int

7条回答
  •  暖寄归人
    2020-12-02 14:38

    You could use a Collector:

    import java.util.*;
    import java.util.stream.Collectors;
    
    public class Defensive {
    
      public static void main(String[] args) {
        Map original = new HashMap<>();
        original.put("foo", new Column());
        original.put("bar", new Column());
    
        Map 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) {}
      }
    }
    

提交回复
热议问题