1、用HashSet分组(唯一),HashMap聚合(k,v)
/* 统计一串字符串当中每个字母出现的个数 给定字符串abacba */ArrayList<String> list = new ArrayList<>();//abacba list.add("a"); list.add("b"); list.add("a"); list.add("c"); list.add("b"); list.add("a"); //分组 HashSet<String> group = new HashSet<>(); for (String s : list) { group.add(s); } System.out.println(group);//[a, b, c] //聚合 HashMap<String, Integer> map = new HashMap<>(); for (String s : group) { //group中元素添加到map中作key {a=0,b=0,c=0} map.put(s,0); } for (String s : list) { if(map.containsKey(s)){ //value+1重新存储到集合中 map.put(s,map.get(s)+1); } } System.out.println(map);//{a=3, b=2, c=1}
2、直接用HashMap分组聚合(k唯一)
ArrayList<String> list = new ArrayList<>();//abacb list.add("a"); list.add("b"); list.add("a"); list.add("c"); list.add("b"); list.add("a"); //分组聚合 HashMap<String, Integer> map = new HashMap<>(); for (String s : list) { if(!map.containsKey(s)){ //不存在k——添加并赋初值1 map.put(s,1); }else{ //存在k——value+1 map.put(s,map.get(s)+1); } } System.out.println(map);