怎样打印一维数组中的重复元素和它的位置?

参看如下代码和注释:

public class TestMain {
    public static void main(String[] args) throws ClassNotFoundException {
        //定义一个数组
        int[] array = new int[]{1, 2, 3, 6, 6, 6, 8, 9, 1, 3, 5, 9, 6};
        //定义LinkedHashMap,可以保证加入的元素的顺序性,key代表数组值,value代表数组值所在的位置
        Map<Integer, List<Integer>> listMap = new LinkedHashMap<>();
        //循环数组
        for (int i = 0; i < array.length; i++) {
            //取得下标对应的数组值
            int number = array[i];
            //以这个值为key获取代表其所在的位置的value值
            List<Integer> positions = listMap.get(number);
            //如果为空,说明这个key值还没遍历过,所以做新增操作
            if (CollectionUtils.isEmpty(positions) || positions.size() == 0) {
                positions = Lists.newArrayList();
                positions.add(i);
                //以数组值为key,数组下标集合为value
                listMap.put(number, positions);
            } else {
                //如果这个key值已经遍历过一次,就把这个重复的位置添加到它对应的value数组里
                positions.add(i);
            }
        }
        //遍历看下重复的元素和它的位置在哪
        for (Map.Entry<Integer, List<Integer>> map : listMap.entrySet()) {
            Integer key = map.getKey();
            List<Integer> value = map.getValue();
            if (value.size() > 1) {
                Object[] valueArray = value.toArray();
                System.out.println(key + "元素重复," + "它的位置是" + Arrays.toString(valueArray));
            }
        }
    }
}

运行结果如下:

在这里插入图片描述
能够成功的打印出一维数组中的重复元素和它的位置。

发布了178 篇原创文章 · 获赞 180 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/104324801