我想通过发现ArrayList中的类似项目位置来过滤ArrayList,以便我可以获取重复项目的索引位置。在Java Arraylist中重复项目的索引
有了这样一个清单:
List = ['A', 'B', 'A', 'C', 'E', 'A']
我希望它给我:
index [0, 2, 5] // A
index [1] // B
index [3] // C
index [4] // E
我想通过发现ArrayList中的类似项目位置来过滤ArrayList,以便我可以获取重复项目的索引位置。在Java Arraylist中重复项目的索引
有了这样一个清单:
List = ['A', 'B', 'A', 'C', 'E', 'A']
我希望它给我:
index [0, 2, 5] // A
index [1] // B
index [3] // C
index [4] // E
Map<Character, List<Integer>> indexes = new HashMap<>();
for (int i = 0; i < list.size(); i++) {
indexes.computeIfAbsent(list.get(i), c -> new ArrayList<>()).add(i);
}
System.out.println(indexes);
// {A=[0, 2, 5], B=[1], C=[3], E=[4]}
char[] list = {'A', 'B', 'A', 'C', 'E', 'A'};
Map<Character, List<Integer>> indexes = new HashMap<>();
for (int i = 0; i < list.length; i++) {
if(indexes.get(list[i]) != null)
{
List<Integer> indexList=indexes.get(list[i]);
indexList.add(i);
indexes.put(list[i],indexList);
}
else
{
List<Integer> indexList = new ArrayList<>();
indexList.add(i);
indexes.put(list[i],indexList);
}
}
System.out.println(indexes);
// {E=[4], A=[0, 2, 5], B=[1], C=[3]}
这么多冗余的代码。在循环中你需要的是:'List
谢谢你们,它实际上工作! –
到目前为止,你已经尝试过什么? – Meenal
我试图检查并找到重复的项目,并将其放入不同的数组中,然后使用这些值逐个删除重复项并再次搜索。如果值1(来自重复数组)与当前索引的值相匹配//在这里做一些事情,但可悲的是,如果这里的语句只运行一次,则不起作用 –
分享您的代码.. – Meenal