练习题

用面向对象的方法求出数组中重复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+"次");
}
上一篇下一篇

猜你喜欢

热点阅读