打印的格式如下:
值:2,位于: 3,6,9
值:2,位于: 3,6,9
值:2,位于: 3,6,9
....................................
public static void main(String[] args) {
int[] nums = {12, 18, 19, 15, 26, 29, 49, 15, 12, 19, 29, 12, 18};
//key为:nums中的数字, value:为key在数组中出现的
Map<Integer, List<Integer>> map = new LinkedHashMap<>(); //LinkedHashMap 可以维护键值对 加入 map 的顺序
//遍历数组,将数组中的数字及其出现的位置建立映射关系
for (int x = 0; x < nums.length; x++) {
List<Integer> positions = map.get(nums[x]);
if (positions == null) {
positions = new ArrayList<>();
map.put(nums[x], positions);
}
positions.add(x);
}
//遍历map,寻找有重复的元素
for (Map.Entry<Integer, List<Integer>> entry : map.entrySet()) {
List<Integer> values = entry.getValue();
if (values.size() > 1) { //说明元素重复
//取key
Integer num = entry.getKey();
//打印结果
pirntResult(num, values);
}
}
}
//打印结果:
private static void pirntResult(Integer num, List<Integer> values) {
StringBuilder results = new StringBuilder();
results.append("值: ").append(num+",").append("位于: ");
for (Integer value : values) {
results.append(value).append(",");
}
results.setCharAt(results.length()-1,' ');
System.out.println(results);
}