I have a map with strings as values. I want to sort it firstly by length, and if length of the strings is the same, i want to sort it alphabetic.
I wrote those code :
String out = outMap.values().stream()
.sorted(Comparator.comparing(e -> e.length()).thenComparing()...)
.collect(Collectors.joining());
The problem is, when i am writing thenComparing, I couldn't use e.length() anymore. How can i fix it?
EDIT : Map . I want to sort the strings and make one string in output by concat all of them.
解决方案
How about
String out = outMap.values().stream()
.sorted(Comparator.comparingInt(String::length)
.thenComparing(Comparator.naturalOrder()))
//OR .thenComparing(String.CASE_INSENSITIVE_ORDER))
.collect(Collectors.joining());