使用java 8 api打印列表项

vic*_*red 24 java java-8

我可以使用类似的东西:

 .forEach(System.out::print)
Run Code Online (Sandbox Code Playgroud)

打印我的列表项,但如果我在打印前有其他操作要做,我不能使用它:

mylist.replaceAll(s -> s.toUpperCase()).forEach(System.out::print)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:无法取消引用void

Hol*_*ger 38

你必须决定.如果要修改列表,则无法组合操作.那你需要两个陈述.

myList.replaceAll(String::toUpperCase);// modifies the list
myList.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

如果您只想map在打印前想要修改值而不修改列表,则必须使用Stream:

myList.stream().map(String::toUpperCase).forEachOrdered(System.out::println);
Run Code Online (Sandbox Code Playgroud)


Ani*_*kur 5

如果您想同时打印和保存修改的值,您可以这样做

List<String> newValues = myList.stream().map(String::toUpperCase)
.peek(System.out::println).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)