在ArrayList中,可以使用HashMap来解决重复元素索引相同的问题。HashMap存储元素和其对应的索引值,当有重复元素时,更新重复元素的索引值为相同的值。
以下是一个示例代码:
import java.util.ArrayList;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add(10);
list.add(20);
list.add(30);
list.add(20);
list.add(40);
list.add(30);
HashMap map = new HashMap<>();
for (int i = 0; i < list.size(); i++) {
int num = list.get(i);
if (!map.containsKey(num)) {
map.put(num, i);
} else {
int index = map.get(num);
map.put(num, Math.min(index, i));
}
}
for (int num : map.keySet()) {
System.out.println("元素 " + num + " 的索引值为 " + map.get(num));
}
}
}
输出结果为:
元素 10 的索引值为 0
元素 20 的索引值为 1
元素 30 的索引值为 2
元素 40 的索引值为 4
在上述代码中,通过遍历ArrayList,使用HashMap将每个元素与其索引值存储起来。如果元素在HashMap中不存在,则将该元素及其索引值放入HashMap中;如果元素在HashMap中已存在,则更新该元素的索引值为较小的索引值。最后遍历HashMap,输出元素及其索引值即可。