java arrylist将重复数字找出_如何在一维数组中查找某重复元素,并输出其位置?用java实现...

这种情况适合使用 Map,Map 的键 为 nums 中的整数,值 为 nums 中整数的所有位置 —— 位置数大于 1,那么说明该整数在数组中重复

import java.util.*;

public class Main {

public static void main(String[] args) throws Exception {

int[] nums = {12, 18, 19, 15, 26, 29, 49, 15, 12, 19, 29, 12, 18};

// map 的键 为 nums 中的整数,值 为 nums 中整数的位置

Map> map = new LinkedHashMap<>(); // LinkedHashMap 可以维护键值对 加入 map 的顺序

for (int i = 0; i < nums.length; i++) {

List positions = map.get(nums[i]);

if (positions == null) { // 如果 map 的键 中不存在这个整数

positions = new ArrayList<>(1);

map.put(nums[i], positions); // 将这个整数和与其关联的位置 positions 放入 map

}

positions.add(i);

}

for (Map.Entry> entry : map.entrySet()) {

List positions = entry.getValue();

if (positions.size() > 1) { // 如果一个整数对应的位置数量大于 1,说明这个整数重复

int num = entry.getKey();

printResult(num, positions);

}

}

}

private static void printResult(int num, List positions) {

StringBuilder result = new StringBuilder();

result.append(num).append(' ').append('{');

for (Integer position : positions) {

result.append(position).append(',');

}

result.setCharAt(result.length() - 1, '}'); // 把最后一个 , 替换为 }

System.out.println(result);

}

}


版权声明:本文为weixin_29938067原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。