用面向对象的方法求出数组中重复 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};
1 出现: 3次
2 出现: 2次
4 出现: 5次
- 分析:
- 思路:
采用HashMap集合来做,将数组中的value值做为集合的key,出现的次数做为value - 步骤:
1. 创建HashMap对象
2. 遍历数组
3. 判断集合中是否存在此key,存在其值+1,否则将其加入集合,值为1
4. 遍历集合,输出结果
- 思路:
大体流程:
代码实现:
类名:Interview_01
包名:com.learn.interview
package com.learn.interview;
import java.util.HashMap;
/**
* 用面向对象的方法求出数组中重复 value 的个数
* int[] arr = {1,4,1,4,2,5,4,5,8,7,8,77,88,5,4,9,6,2,4,1,5};
* 1 出现: 3次
* 2 出现: 2次
* 4 出现: 5次
* 5 出现: 4次
* 6 出现: 1次
* 7 出现: 1次
* 8 出现: 2次
* 88 出现: 1次
* 9 出现: 1次
* 77 出现: 1次
*
* 分析:
* 思路:采用HashMap集合来做,将数组中的value值做为集合的key,出现的次数做为value
* 步骤:1.创建HashMap对象
* 2.遍历数组
* 3.判断集合中是否存在此key,存在其值+1,否则将其加入集合,值为1
* 4.遍历集合,输出结果
*/
public class Interview_01 {
public static void main(String[] args) {
// 得到数据
int[] arr = {1,4,1,4,2,5,4,5,8,7,8,77,88,5,4,9,6,2,4,1,5};
// 1.创建HashMap对象
HashMap<Integer,Integer> map = new HashMap<>();
// 2.遍历数组arr
for (int i:arr) {
// 3.1判断map集合中是否包含i这个键,若包含则将其值+1
if (map.containsKey(i)) {
// 此时i作为key
map.put(i,map.get(i)+1);
}else {
// 3.2不包含,将其添加到map集合中,其值置为1
map.put(i,1);
}
}
// 4.lambda表达式遍历map集合
map.forEach((key,value) -> {
// 5.输出结果数组中重复 value 的个数
System.out.println(key+"\t出现: "+value+"次");
});
}
}
运行结果: