版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}
}