【发布时间】:2017-06-02 21:14:44
【问题描述】:
我的列表包含 [1,3,5][2,6,4] 等集合,大小相同。
我试过这样做,但它似乎不起作用。
List<TreeSet<T>> block;
for(TreeSet<T> t : block){
block.stream().sorted((n,m)->n.compareTo(m)).collect(Collectors.toSet());
}
我想要的最终结果是[1,2,3][4,5,6]。
我可以尝试在ArrayList 中添加所有元素并对其进行排序,然后创建一个新的List TreeSet。但是有没有某种单线?
更新:
List<T> list=new ArrayList<T>();
for(TreeSet<T> t : block){
for(T t1 : t)
{
list.add(t1);
}
}
list=list.stream().sorted((n,m)->n.compareTo(m)).collect(Collectors.toList());
这可行,但可以简化吗?
【问题讨论】:
-
只是为了确定 - 您想重新排列元素,使每个集合包含三个元素,并且集合本身按升序排列?
-
确保有一个衬里,如果你从左边开始,并将你的边距设置在右边。而且一旦写出来,就没有人能够阅读了。
-
是的,这就是我想要的最终结果@Mureinik
-
该代码不起作用,因为您正在将集合与集合进行比较。然而,很明显这些集合基本上是不相关的——看起来你需要展平,然后对 that 进行排序。
-
@LexByte 你需要
flatMap然后排序再收集。block.stream().flatMap(Set::stream).sorted().collect(Collectors.toList())。请注意,(n,m)->n.compareTo(m)根本不需要。
标签: java java-8 java-stream treeset