给定n个字符串,求每个字符串出现的次数并且按出现次数从大到小排序输出(java8方式)

思路:利用java8的分组(groupingBy) 可以求出每个字符出现的次数返回的是一个Map,对该Map的值进行排序,最后再转回LinkedHashMap(保持顺序),只是为了一行代码实现而已


	String[] names = { "张三", "张三", "李四", "李四", "李四", "李四", "王五", "A", "B", "C", "C" };
		Map finalMap = Stream.of(names)
				.collect(Collectors.groupingBy(Function.identity(), Collectors.counting())).entrySet().stream()
				.sorted((v1, v2) -> v2.getValue().compareTo(v1.getValue()))
				.collect(Collectors.toMap(Entry::getKey, Entry::getValue, (m1, m2) -> m2, LinkedHashMap::new));
		System.out.println(finalMap);
(里面的m1,和m2是当map的key出现重复后要采取的措施,这里是后面覆盖前面,文中的环境下是不可能重复的)

你可能感兴趣的:(java8)