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()]);
- 1
- 2
- 3
- 4
这样写比较啰嗦,可以变成stream,以便用lambda表达式,也不必声明一个多余的list变量:
String[] array = getHelper().getFtpFileNameList("/",path)
.stream()
.toArray(size -> new String[size]);
- 1
- 2
- 3
一句搞掂晒。
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]);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11