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

public static void main(String[] args) {
    Integer[] numbers={12,18,19,15,26,29,49,15,12,19,29,12,18};
    //集合用来存放不重复的数字
    ArrayList<Integer> numberArray=new ArrayList<>();
    //嵌套集合用来存放重复数字的角标
    ArrayList<ArrayList<Integer>> numberIndex=new ArrayList<>();
    //集合中存放重复出现的数字
    ArrayList<Integer> sameArray=new ArrayList<>();
    for(int i=0;i<numbers.length;i++){//
        //只遍历一遍
        if(!numberArray.contains(numbers[i])){
            //新数字存进集合
            numberArray.add(numbers[i]);
        }
        else{
            if(!sameArray.contains(numbers[i])){
                //重复数字存进集合
                sameArray.add(numbers[i]);
                //在这个嵌套集合中创建存有这个数字角标的集合
                ArrayList<Integer> numberHead=new ArrayList<>();
                //把第一次出现该数字的角标存进集合
                numberHead.add(new Integer(numberArray.indexOf(numbers[i])));
                numberIndex.add(numberHead);
            }
            //把此次出现的该数字的角标存进集合
            numberIndex.get(sameArray.indexOf(numbers[i])).add(new Integer(i));
        }
    }
    //输出结果
    for(int i=0;i<sameArray.size();i++){
        System.out.println(sameArray.get(i)+"\t"+numberIndex.get(i).toString());
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值