如何将数据保存在哈希映射中

时间:2017-04-20 00:23:26

标签: java data-structures hashmap

我可以打印如下数据:

id    comes_in
___   ________
1       1
2       1
3       1
4       2
5       2
6       3

其中id和come_in都是整数。现在我想把它保存在一个hashmap中,其中key是come_in,值是id的arraylist。

HashMap<Integer,ArrayList<Integer>> map=new  HashMap<Integer,ArrayList<Integer>>();

所以它将如下所示:

comes_in     id
________     ___
1             1,2,3 
2             4,5
3             6

但问题是如何将它们放在一个hashmap中,因为最初我无法通过come_in对id进行分组。很感激帮助。

1 个答案:

答案 0 :(得分:1)

使用Java 8 Stream。你的任务很容易实现。 请参阅:https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html#groupingBy-java.util.function.Function-java.util.function.Supplier-java.util.stream.Collector-

public class TestProgram {
  public static void main(String...args) {
    Map<Integer, Integer> map = new HashMap<>();
    map.put(1, 1);
    map.put(2, 1);
    map.put(3, 1);
    map.put(4, 2);
    map.put(5, 2);
    map.put(6, 3);

    Map<Object, List<Object>> result = map.entrySet().stream()
        .collect(Collectors.groupingBy(
              Entry::getValue, 
              HashMap::new, 
              Collectors.mapping(Entry::getKey, Collectors.toList())
            ));
    System.out.println(result);
    // {1=[1, 2, 3], 2=[4, 5], 3=[6]}
  }
}