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

来源:互联网 发布:怎么修改本机端口号 编辑:程序博客网 时间:2024/05/21 07:58
直接上代码,这段代码 直接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 0
原创粉丝点击