判断集合中是否存在重复元素/查找集合中所有的重复元素,并进行显示

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nrsc272420199/article/details/87937194

好久没写这种代码了,特此记录一下


需求

  • 判断集合中是否存在重复元素(我项目中的一个实际需求),需求如下:
{ 1, 2, 3, 5, 4, 3, 7, 2, 0, 1, 3, 2, 0, 2 } ------> 存在重复元素
{ 1, 2, 3, 4, 5, 6}--------------------------------> 不存在重复元素
  • 查找集合中所有的重复元素,并进行显示(自己瞎写着玩的☺),需求如下:
{ 1, 2, 3, 5, 4, 3, 7, 2, 0, 1, 3, 2, 0, 2 } 
------> 查询结果为:{1=[0, 9], 2=[1, 7, 11, 13], 3=[2, 5, 10]}

代码

package com.nrsc.job;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Demo {

	public static void main(String[] args) {

		int[] arr = { 1, 2, 3, 5, 4, 3, 7, 2, 0, 1, 3, 2, 0, 2 };
		int[] arr1 = { 1, 2, 3, 4, 5, 6 };

		// 判断集合中是否存在重复元素
		Boolean flag = existRepeatedElements(arr);
		System.out.println(flag);

		Boolean flag1 = existRepeatedElements(arr1);
		System.out.println(flag1);

		// 查找集合中所有的重复元素,并进行显示
		Map<Integer, List<Integer>> map = findAllRepeatedElements(arr);

		System.out.println(map);

	}

	/**
	 * 判断集合中是否存在重复元素
	 * 
	 * @param arr
	 * @return
	 */
	private static Boolean existRepeatedElements(int[] arr) {
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = i + 1; j < arr.length; j++) {
				if ((arr[i] == arr[j]) && (i != j)) {
					return true;
				}
			}
		}
		return false;
	}

	/**
	 * 查找集合中所有的重复元素,并进行显示
	 * 
	 * @param arr
	 * @return
	 */
	public static Map<Integer, List<Integer>> findAllRepeatedElements(int[] arr) {

		Map<Integer, List<Integer>> map = new HashMap<>();

		for (int i = 0; i < arr.length - 1; i++) {
			// 重复元素的下标列表
			List<Integer> list = new ArrayList<>();

			// 防止重复元素再次出现覆盖第一次出现时获得的结果
			if (map.get(arr[i]) != null) {
				break;
			}

			list.add(i);
			for (int j = i + 1; j < arr.length; j++) {
				if ((arr[i] == arr[j]) && (i != j)) {
					list.add(j);
					map.put(arr[i], list);
				}
			}
		}
		return map;
	}
}

结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/nrsc272420199/article/details/87937194