如果要在Java中将两个列表合并为一个,可以使用ListUtils.union(List list1,List list2)
。但是,如果我想合并多个列表怎么办?
这有效:
import org.apache.commons.collections.ListUtils;
List<Integer>list1=Arrays.asList(1,2,3);
List<Integer>list2=Arrays.asList(4,5,6);
List<Integer>list3=Arrays.asList(7,8,9);
List<Integer>list4=Arrays.asList(10,0,-1);
System.out.println(ListUtils.union(ListUtils.union(list1, list2),ListUtils.union(list3, list4)));
但这似乎并不是最好的解决方案,阅读起来也不是特别好。可悲的是ListUtils.union(list1,list2,list3,list4)
不起作用。addAll
对于我来说,多次使用并为所有条目重复创建自己的列表似乎也不理想。那我该怎么办呢?
借助下面的代码中所示的Stream
API,
Java
8可以轻松实现这一目标。我们基本上已经创建了一个包含所有列表的流,然后,由于我们需要列表的各个内容,因此有必要将其展平flatMap
并最终将元素收集到中List
。
List<Integer>list1=Arrays.asList(1,2,3);
List<Integer>list2=Arrays.asList(4,5,6);
List<Integer>list3=Arrays.asList(7,8,9);
List<Integer>list4=Arrays.asList(10,0,-1);
List<Integer> newList = Stream.of(list1, list2, list3,list4)
.flatMap(Collection::stream)
.collect(Collectors.toList());
System.out.println(newList); // prints [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, -1]
如何将一个数据帧中的多列(比如3列)组合成一个列(在一个新的数据帧中),其中每一行都成为一个Spark DenseVector?类似于这个线程,但在Java中,有一些下面提到的调整。 我试着用这样的UDF: 然后注册UDF: 其中<code>数据类型<code>为: 当我在一个有3列的数据帧上调用这个UDF并打印出新数据帧的模式时,我得到如下结果: 这里的问题是,我需要一个向量在外部,而不是在结构
(注意这不是按字母顺序,蓝莓排在狒狒之前) 当然,只要有一个列表不是空的,我就可以用一个计数器在“superlist”中循环,一个接一个地向resultslist中添加项目: 但最好使用一些优化的LINQ函数来实现这一点。我一直在研究Zip、GroupBy和Aggregate,但无法使它们工作。 那么:有没有一个漂亮的LINQ函数,或者多个函数的组合,可以把它变成漂亮的代码,或者我应该坚持(也许优
问题内容: 我有一个要合并的文件数组。这是我尝试过的,但是没有用。 问题答案: 使用IOUtils可以做到这一点。看我的例子: 如果您不能使用IOUtils lib,请编写自己的实现。例:
Java8在收集器中提供了一个groupingBy函数,但它给出了元素的映射。我需要把地图转换成单个列表。 它还返回结果,但我想要的是对列表本身执行分组操作,这样我就不必重新分配它,因为在lambda表达式中不可能重新分配。 但是nodelistgrouped.values()返回Collection(List)
我想知道是否有可能将不同流中的数据合并成一个流。通过合并,我的意思是将其添加到单独的列中,而不是添加到现有的列中。 到目前为止,我已经能够将数据收集到单独的地图中,如下面的示例所示。我认为我应该把这些地图合并成一张,但不确定如何去做,或者我是否做错了什么。 我做了一些搜索,在FlatMap、Concat等网站上找到了一些线索,但因为我对这条流还不熟悉 例如:列出数据-1
问题内容: 我有2个列表,每个列表大小相等,并且有兴趣将这两个列表合并并将其写入文件。 -结果列表应类似于[(1,2 ,,(2,3),(3,4),(5,5)] 之后,我希望将其写入文件。我怎样才能做到这一点? 问题答案: 文件中的结果输出为: