java - 在 ArrayList 中查找重复项
问题描述
我想知道如何执行以下操作:我有 2 个数组列表,其中的值相互关联。即同一索引上的arraylists的元素是相互关联的。例如:ArrayList 1 (String arraylist) = [id1, id2, id3, id2, id2, id1]。ArrayList 2(整数数组列表)= [2, 3, 2, 5, 6, 3]。
我想创建 2 个新的数组列表,其中不再存在重复值。在上述情况下,新的arraylists 应该是arraylist1 = [id1, id2, id3]。数组列表2 = [5, 14, 2]。即,相应地添加第二个数组列表中的值(因为它们与同一索引上的第一个数组列表中的值相关联)。
我不明白如何开始。
解决方案
迭代i
两个数组的每个索引,并使用HashMap
. 一旦累积完成,hashmap 的键将具有不重复的 id。
List<String> ids = Arrays.asList(
"id1",
"id2",
"id3",
"id2",
"id2",
"id1"
);
List<Integer> vals = Arrays.asList(2, 3, 2, 5, 6, 3);
Map<String, Integer> m = new HashMap<>();
for (int i=0; i<ids.size(); i++) {
String id=ids.get(i);
int val = vals.get(i);
m.put(id, m.getOrDefault(id, 0) + val);
}
List<String> newIds = new ArrayList<>(m.keySet());
List<Integer> newVals = new ArrayList<>(m.values());
推荐阅读
- javascript - 通过javascript将参数传递给动作不会传递整数值
- github - 为什么即使在正确安装后我也会收到 ModuleNotFoundError?
- reactjs - 尝试导入错误:“firestore”未从“firebase/app”导出(导入为“firebase”)
- matrix - 行矩阵优于计算机图形的矩形矩阵?
- python - 使用迭代堆栈方法检测有向图中的循环
- c# - 二进制文件的十六进制值不会使用 C# 更改
- python - 如何检查 pip 安装包的 git 哈希
- javascript - 如何在不使用向量的情况下将数组传递给函数?
- python - 将 Jupyter 笔记本的副本自动维护为纯 Python 代码
- orange - 使用 k 均值的 orange3 聚类