java中的ArrayList to Array

193 阅读1分钟

java里面,ArrayList是可变数组,Array是固定长度数组。如果ArrayList转换为Array,需要大费周折。

上代码:

//已知helper.getFtpFileNameList()返回ArrayList<String>类型的数组
ArrayList<String> list = getHelper().getFtpFileNameList("/",path);
//转换成Array的时候,一定要指明Array的长度
String[] array = list.toArray(new String[list.size()]);

这样写比较啰嗦,可以变成stream,以便用lambda表达式,也不必声明一个多余的list变量:

String[] array = getHelper().getFtpFileNameList("/",path)
        .stream()
        .toArray(size -> new String[size]);

一句搞掂晒。


2019.09.03
c#中,linq里有select,类似SQL,从众多字段中指定若干。java的stream里面类似的功能是map。如下示例:

File folder = new File(path);
if(!folder.exists()){
    throw new Exception("文件不存在或路径错误!");
}
File[] files = folder.listFiles();
if (files.length == 0) {
    throw new Exception("文件夹是空的!");
}
String[] array = Arrays.stream(files)
        .map(File::getName)
        .toArray(size -> new String[size]);