我可以打印如下数据:
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进行分组。很感激帮助。
答案 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]}
}
}