java stream 将数据分组并在组内进行排序
package com.my.app.stream; // 此处为你自己的路径
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Description 分组,并在组内进行排序
*/
public class GroupBy {
public static void main(String[] args) {
List<String> lt = Arrays.asList("aaa", "bbbb", "CC", "dd", "ff", "GGG");
//按大小写进行分组
Map<Boolean, List<String>> collect = lt.stream().collect(Collectors.groupingBy(x -> x.equals(x.toUpperCase())));
System.out.println("before:" + collect);
for (Map.Entry<Boolean, List<String>> entry : collect.entrySet()) {
List<String> value = entry.getValue();
value.sort(GroupBy::compareByLength);
}
System.out.println("after:" + collect);
}
// 组内,按长度从大到小进行排序
public static int compareByLength(String s1, String s2) {
int len1 = s1.length();
int len2 = s2.length();
if (len1 == len2) {
return 0;
}
return len1 > len2 ? -1 : 1;
}
}