Ano*_*ous 3 java lambda arraylist java-8
假设我有一个列表如下
Collection<?> mainList = new ArrayList<String>();
mainList=//some method call//
Run Code Online (Sandbox Code Playgroud)
目前,我将列表中的元素显示为
System.out.println(mainList.stream().map(Object::toString).collect(Collectors.joining(",")).toString());
Run Code Online (Sandbox Code Playgroud)
我得到了结果
a,b,c,d,e,f,g,h,i
Run Code Online (Sandbox Code Playgroud)
如何通过在java中的列表中的每个第3个元素之后添加新行来打印此列表,以便它将打印结果如下所示
a,b,c
d,e,f
g,h,i
Run Code Online (Sandbox Code Playgroud)
注意:这类似于如何在java中的arraylist中的每个第3个元素之后添加换行符?但是在阅读时自己完成了格式化文件.我想在打印输出时这样做.
如果您想坚持使用Java Stream API,那么可以通过将初始列表分区为大小为3的子列表,然后将每个子列表表示为String并将结果与之结合来解决您的问题\n.
import java.util.AbstractMap;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
final class PartitionListExample {
public static void main(String[] args) {
final Collection<String> mainList = Arrays.asList("a", "b", "c", "d", "e", "f", "g", "h", "i");
final AtomicInteger idx = new AtomicInteger(0);
final int size = 3;
// Partition a list into list of lists size 3
final Collection<List<String>> rows = mainList.stream()
.collect(Collectors.groupingBy(
it -> idx.getAndIncrement() / size
))
.values();
// Write each row in the new line as a string
final String result = rows.stream()
.map(row -> String.join(",", row))
.collect(Collectors.joining("\n"));
System.out.println(result);
}
}
Run Code Online (Sandbox Code Playgroud)
有第三方库提供实用程序类,使列表分区更容易(例如Guava或Apache Commons Collections),但此解决方案仅基于Java 8 SDK构建.
它的作用是:
{0=[a,b,c],1=[d,e,f],2=[g,h,i]}[[a,b,c],[d,e,f],[g,h,i]]\n运行以下程序将在输出后打印到控制台:
a,b,c
d,e,f
g,h,i
Run Code Online (Sandbox Code Playgroud)
参宿一甚至更演奏与下面的示例,并与通过利用较短的溶液想出了Collectors.joining(",")在.groupingBy集电体,并使用String.join("\n", rows)在端,而不是触发另一个流减少.
final Collection<String> rows = mainList.stream()
.collect(Collectors.groupingBy(
it -> idx.getAndIncrement() / size,
Collectors.joining(",")
))
.values();
// Write each row in the new line as a string
final String result = String.join("\n", rows);
System.out.println(result);
}
Run Code Online (Sandbox Code Playgroud)
请记住,这不是以所需格式打印元素列表的最有效方法.但是,如果要创建最终结果并且非常易于阅读和理解,那么任何元素的分区列表都会为您提供灵活性.
| 归档时间: |
|
| 查看次数: |
2833 次 |
| 最近记录: |