首页 > 解决方案 > 在 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]。即,相应地添加第二个数组列表中的值(因为它们与同一索引上的第一个数组列表中的值相关联)。

我不明白如何开始。

标签: javasearcharraylist

解决方案


迭代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());

推荐阅读