Java怎样快速分出一个数组中相同元素的下标

tech2022-08-17  125

直接上代码,这段代码 直接copy运行看效果就行。 使用的时候直接把string数组替换成自己的就可以了

public static void main(String[] args) { Map<String, Integer> map = new HashMap<String, Integer>(); String[] array = new String[] { "ff", "BB", "cc", "dd", "AA", "BB", "cc", "dd", "AA", "BB", "AA" }; for (String str : array) { Integer num = map.get(str); num = null == num ? 1 : num + 1; map.put(str, num); } if (array.length != map.size()) { System.out.println("存在相同的元素及重复个数!"); } Set set = map.entrySet(); Iterator<Entry> it = set.iterator(); List<String> sList = new ArrayList<String>(); while (it.hasNext()) { Entry<String, Integer> entry = (Entry<String, Integer>) it.next(); String key = entry.getKey(); Integer value = entry.getValue(); System.out.println("String :" + key + " num :" + value); if (value > 1) sList.add(key); } System.out.println("============相同元素的下标======================"); List<ArrayList<Integer>> indexArr = new ArrayList<ArrayList<Integer>>(); for (String s : sList) { ArrayList<Integer> aIntegers = new ArrayList<Integer>(); for (int i = 0; i < array.length; i++) { if (array[i].equals(s)) { aIntegers.add(i); } } if (aIntegers.size() > 0) indexArr.add(aIntegers); } System.out.println(indexArr); }

效果如下:

存在相同的元素及重复个数! String :dd num :2 String :AA num :3 String :BB num :3 String :ff num :1 String :cc num :2 相同元素的下标========== [[3, 7], [4, 8, 10], [1, 5, 9], [2, 6]]

最新回复(0)