用面向对象的方法求出数组中重复value值的个数
2020-07-10 本文已影响0人
老奶猹
1 出现:1 次
3 出现:2 次
8 出现:3 次
2 出现:4 次
int[] arr = {1,4,1,4,2,5,4,5,8,7,8,77,88,5,4,9,6,2,4,1,5};
首先,可以使用两个数组来获取数组中重复的value值。一个数组用来当做原始数组,一个数组用来记录value值重复的个数。
int[] arr = {1,4,1,4,2,5,4,5,8,7,8,77,88,5,4,9,6,2,4,1,5};
System.out.println("arrlength:"+arr.length);
int[] arrNum = new int[126]; //创建一个新数组,用来记录value重复的个数
for(int i=0;i<arr.length;i++){
arrNum[arr[i]]++; //记录原始数组value重复个数
}
//遍历arrNum数组输出
for(int i=0;i<arrNum.length;i++){
if(arrNum[i] != 0)
System.out.println(i + "出现:" + arrNum[i] + "次");
}
但是使用数组的话,每次我们都得需要提前知道原始数组的长度,才能确定新数组的长度,这时我们可以使用map来存储重复的值
int[] arr = {1,4,1,4,2,5,4,5,8,7,8,77,88,5,4,9,6,2,4,1,5};
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
//将数组中不一样的值都存入map中
for(int i=0;i<arr.length;i++){
int a = arr[i];
//判断map是否包含该值
if(!map.containsKey(a)){
map.put(a,a);
}
}
//将arr数组中的值与map中的值一一对比,找出重复值出现的次数
for(Map.Entry<Integer,Integer> entry: map.entrySet()){
Integer key = entry.getKey();
int num = 0;
for(int i=0;i<arr.length;i++){
if(arr[i] == key){
num++;
}
}
map.put(key,num);
}
//将map遍历输出
for(Map.Entry<Integer,Integer> entry : map.entrySet()){
Integer key = entry.getKey();
Integer num = eentry.getValue();
System.out.println("值"+key+"出现了"+num+"次");
}