判斷集合中是否存在重複元素/查找集合中所有的重複元素,並進行顯示


好久沒寫這種代碼了,特此記錄一下


需求

  • 判斷集合中是否存在重複元素(我項目中的一個實際需求),需求如下:
{ 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;
	}
}

結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章