Java 从列表中查找小写字母数最多的字符串<;字符串>;。(使用流)
我做过这样的事情:Java 从列表中查找小写字母数最多的字符串<;字符串>;。(使用流),java,collections,java-8,java-stream,Java,Collections,Java 8,Java Stream,我做过这样的事情: List<String> strList = asList("getElementById", "htmlSpecialChars", "httpRequest"); String maxOfLowercase = strList.stream() .max((o1, o2) -> { long lowerCount1 = o1.chars().filter(Character::isLowerCase
List<String> strList = asList("getElementById", "htmlSpecialChars", "httpRequest");
String maxOfLowercase = strList.stream()
.max((o1, o2) -> {
long lowerCount1 = o1.chars().filter(Character::isLowerCase).count();
long lowerCount2 = o2.chars().filter(Character::isLowerCase).count();
return Long.compare(lowerCount1, lowerCount2);
}).get();
List strList=asList(“getElementById”、“htmlSpecialChars”、“httpRequest”);
字符串maxOfLowercase=strList.stream()
.最大值((o1,o2)->{
long lowerCount1=o1.chars().filter(Character::isLowerCase.count();
long lowerCount2=o2.chars().filter(Character::isLowerCase.count();
返回Long.compare(lowerCount1,lowerCount2);
}).get();
但是我认为可以让这更容易,不是吗?更容易/更简短是为了品味,但你可以这样写
import static java.util.stream.Collectors.*;
List<String> maxOfLowercase = strList.stream()
.collect(groupingBy(s -> s.replaceAll("[^a-z]", "").length(),
TreeMap::new, toList()))
.lastEntry().getValue();
在
比较器
界面中有一些方便的静态方法,可以帮助您缩短代码:
String maxOfLowercase = strList.stream()
.max(Comparator.comparingLong(o -> o.chars().filter(Character::isLowerCase).count()))
.get();
String maxOfLowercase = strList.stream()
.max(Comparator.comparingLong(o -> o.chars().filter(Character::isLowerCase).count()))
.get();