「java合并stream」Java合并两个有序数组
今天给各位分享java合并stream的知识,其中也会对Java合并两个有序数组进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、如何使用java合并多个文件
- 2、java中 两个list怎么合并啊?有list,list1,list2。想要list等于list1和list2相加得到的队列怎么写?
- 3、java8中如何将多个集合的数据拼接成一个统一的流
如何使用java合并多个文件
使用java编程语言,对文件进行操作,合并多个文件,代码如下:
import static java.lang.System.out;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.Arrays;
public class test {
public static final int BUFSIZE = 1024 * 8;
public static void mergeFiles(String outFile, String[] files) {
FileChannel outChannel = null;
out.println("Merge " + Arrays.toString(files) + " into " + outFile);
try {
outChannel = new FileOutputStream(outFile).getChannel();
for(String f : files){
FileChannel fc = new FileInputStream(f).getChannel();
ByteBuffer bb = ByteBuffer.allocate(BUFSIZE);
while(fc.read(bb) != -1){
bb.flip();
outChannel.write(bb);
bb.clear();
}
fc.close();
}
out.println("Merged!! ");
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {if (outChannel != null) {outChannel.close();}} catch (IOException ignore) {}
}
}
//下面代码是将D盘的1.txt 2.txt 3.txt文件合并成out.txt文件。
public static void main(String[] args) {
mergeFiles("D:/output.txt", new String[]{"D:/1.txt", "D:/2.txt", "D:/3.txt"});
}
}
java中 两个list怎么合并啊?有list,list1,list2。想要list等于list1和list2相加得到的队列怎么写?
Java将两个list合并,只需要把list1和list2内容都添加都集合list中即可,如下:
package com.test;
import java.util.ArrayList;
import java.util.List;
public class TestA {
/**
* @param args
*/
public static void main(String[] args) {
//定义集合1
ListString list1=new ArrayListString();
list1.add("a1");
list1.add("a2");
list1.add("a3");
System.out.println("集合1内容:"+list1);
//定义集合2
ListString list2=new ArrayListString();
list2.add("b1");
list2.add("b2");
list2.add("b3");
System.out.println("集合2内容:"+list2);
ListString list=new ArrayListString();
//将集合1的内容全添加到集合中
list.addAll(list1);
//将集合2的内容全添加到集合中
list.addAll(list2);
System.out.println("现在集合内容:"+list);
}
}
运行结果:
集合1内容:[a1, a2, a3]
集合2内容:[b1, b2, b3]
现在集合内容:[a1, a2, a3, b1, b2, b3]
java8中如何将多个集合的数据拼接成一个统一的流
java8中stream的提供了一个拼接流的方法Stream.concat,可以将两个stream拼接成一个stream, 保持了两个stream中的元素顺序。
那么如果我们需要对多个集合中的元素拼接成一个stream来统一处理,可以怎么做呢?
比如有三个CollectionString c1, c2, c3.
方法一,使用Stream.concat方法来拼接,可以使用一个for循环来处理。
private static StreamString concat1(ListCollectionString collections) {
Stream result = Stream.empty();
for (CollectionString strings : collections) {
result = Stream.concat(result, strings.stream());
}
return result;
}
方法二,使用flatMap方法,将集合变成stream, 再压平
private static StreamString concat2(ListCollectionString collections) {
return collections.stream()
.flatMap(Collection::stream);
}
对于不同集合类型的数据,如何做成一个统一的流?还是可以使用flatMap方法来做
方法三:
private static StreamString concat3(ListString s1,String[] s2, SetString s3) {
return Stream.of(s1.stream(), Arrays.stream(s2), s3.stream())
.flatMap(Function.identity());
}
方法三和方法二相比,可以使用不同类型的集合类型来拼接流,方法二在拥有共同基类的情况下使用会显得简洁很多。
java合并stream的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java合并两个有序数组、java合并stream的信息别忘了在本站进行查找喔。
发布于:2022-12-06,除非注明,否则均为
原创文章,转载请注明出处。