常规解法
public boolean uniqueOccurrences(int[] arr) { Map<Integer,Integer> map = new HashMap<>(); for(int element:arr){ map.put(element,map.getOrDefault(element,0)+1); } Set<Integer> set = new HashSet<>(); for(int value:map.values()){ set.add(value); } return set.size()==map.keySet().size();}
使用Lambda表达式与流式计算
public boolean uniqueOccurrences(int[] arr) { Map<Integer, Integer> map = new HashMap<>(); for(int i : arr) map.merge(i, 1, Integer::sum); int i1 = map.values().stream().distinct().mapToInt(i -> i).sum(); int i2 = map.values().stream().mapToInt(i -> i).sum(); return i1 == i2; }