Dev*_*vin 13 java mapping capitalization java-8 java-stream
我有一个List<String>只通过使用流API我将所有字符串设置为小写,将它们从最小的字符串排序到最大字符串并打印它们.我遇到的问题是将字符串的第一个字母大写.
这是我做的事.stream().map()吗?
public class Main {
public static void main(String[] args) {
List<String> list = Arrays.asList("SOmE", "StriNgs", "fRom", "mE", "To", "yOU");
list.stream()
.map(n -> n.toLowerCase())
.sorted((a, b) -> a.length() - b.length())
.forEach(n -> System.out.println(n));;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
me
to
you
some
from
strings
Run Code Online (Sandbox Code Playgroud)
期望的输出:
Me
To
You
Some
From
Strings
Run Code Online (Sandbox Code Playgroud)
Ous*_* D. 14
这样的事情应该足够了:
list.stream()
.map(n -> n.toLowerCase())
.sorted(Comparator.comparingInt(String::length))
.map(s -> Character.toUpperCase(s.charAt(0)) + s.substring(1))
.forEachOrdered(n -> System.out.println(n));
Run Code Online (Sandbox Code Playgroud)
map在排序后添加了一个操作,将第一个字母大写.And*_*lko 14
list.stream()
.map(s -> s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase())
.sorted(Comparator.comparingInt(String::length))
.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
为了便于阅读,应将执行大写的行移入方法中,
public class StringUtils {
public static String capitalise(String s) {
return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
}
}
Run Code Online (Sandbox Code Playgroud)
所以你可以通过一个雄辩的方法参考来引用它:
list.stream()
.map(StringUtils::capitalise)
.sorted(Comparator.comparingInt(String::length))
.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
664 次 |
| 最近记录: |