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

直接上代码,这段代码 直接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]]


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值