我有对象列表,并且有可能我们有多个不同对象的副本,现在我的目标是遍历列表并将相同的对象存储在单独的列表中。关于如何实现这一点的任何想法。
输入列表
[1,3,3,1,4]
我想要实现的目标
[1,1]
[3,3]
[4]
答案 0 :(得分:1)
您可以使用新的流API执行此操作。但我还不是很熟悉它。如果我是你,我会这样做:
int[] list = {1, 3, 3, 1, 4};
HashMap<Integer, ArrayList<Integer>> listsMap = new HashMap<>();
for (int i: list) {
if (!listsMap.containsKey(i)) {
listsMap.put(i, new ArrayList<>());
listsMap.get(i).add(i);
} else {
listsMap.get(i).add(i);
}
}
System.out.println(listsMap);
说明:
首先,我们创建一个存储列表的地图(第2行)。这用于查找在我们循环遍历数组时将项添加到的正确列表。
现在我们遍历数组(第3行)。我们检查是否已经遇到过该项目(第4行)。如果还没有,请将新ArrayList
添加到地图中,并将当前项目作为键(第5行)。然后我们将项目放入新创建的数组中(第6行)。如果我们之前遇到过该项,只需使用该项的键将该项添加到数组中(第8行)。