从List <String>中查找具有最大小写字母数的字符串.(使用流)

Let*_*far 5 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).count();
                long lowerCount2 = o2.chars().filter(Character::isLowerCase).count();
                return Long.compare(lowerCount1, lowerCount2);
            }).get();
Run Code Online (Sandbox Code Playgroud)

但我认为有可能让这更容易\射手,不是吗?

Tag*_*eev 6

Comparator界面中有方便的静态方法,可以帮助您缩短代码:

String maxOfLowercase = strList.stream()
        .max(Comparator.comparingLong(o -> o.chars().filter(Character::isLowerCase).count()))
        .get();
Run Code Online (Sandbox Code Playgroud)