例子:用面向对象的方法求出数组中重复 value 的个数,按以下个数输出:
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};java
代码:数组
package cn.zz.shop.util; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.TreeMap; /** * @author he * @date 2018/9/13 */ public class MySet { public static void main(String[] args) { MySet set = new MySet(); 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> countSameEle = set.countSameEle(arr); System.out.println(countSameEle); } /** * 返回一个数组中不一样元素出现的次数 * * @param arr 数组 * @return 返回不一样元素出现的次数的map */ public Map<Integer, Integer> countSameEle(int[] arr) { Map<Integer, Integer> map = new TreeMap<>(); Set set = new HashSet(); // 遍历数组,将数组放进一个set集合中,若放不进去,则次数+1 for (int i = 0; i < arr.length; i++) { boolean hasAdd = set.add(arr[i]); if (!hasAdd) { Integer temp = map.get(arr[i]); map.put(arr[i], temp + 1); } else { map.put(arr[i], 1); } } return map; } }
结果:对象
{1=3, 2=2, 4=5, 5=4, 6=1, 7=1, 8=2, 9=1, 77=1, 88=1}get