编写程序随机生成一个100个整数元素(元素小于100)的数组,然后计算出这100个元素中有多少个不重复的元素?每个元素分别重复了多少次?
思路分析
1、循环数组,添加到map中
2、因为map存储的是键值对,同时键值不能重复,所以我们把数组中的元素当做键,个数当做值。
代码如下
public class Test {
public static void main(String[] args) {
int[] arr = {2,5,3,4,7,1,9,1,7,4,5,2,7};
test1(arr);
}
/**
* 查找数组里重复的元素,每个元素出现几次
*/
public static void test1(int[] arr){
Map<Integer, Integer> map = new HashMap<>();
//循环数组,添加到map
//定义两个计数器
int count1 = 0;
int count2 = 0; //记录有多少重复的元素
for (int i = 0; i < arr.length; i++) {
boolean flag = true;
//如果map中没有这个数(key),put(值,1)
if(map.containsKey(arr[i])){
int val = map.get(arr[i]);
//有的话加1
map.put(arr[i],val+1);
count1++;
}else{
map.put(arr[i],1);
}
if(count1>1){
count2++;
}
}
System.out.println(map);
System.out.println("有"+(arr.length-count1-count2)+"个不重复的元素");
}
}