我需要将一个 String[]
转换为一个 ArrayList<String>
,但我不知道如何操作。
可能是重复问题:
在Java中将数组分配给ArrayList
File dir = new File(Environment.getExternalStorageDirectory() + "/dir/");
String[] filesOrig = dir.list();
基本上我想将
filesOrig
转换为一个ArrayList
。我需要将一个 String[]
转换为一个 ArrayList<String>
,但我不知道如何操作。
可能是重复问题:
在Java中将数组分配给ArrayList
File dir = new File(Environment.getExternalStorageDirectory() + "/dir/");
String[] filesOrig = dir.list();
filesOrig
转换为一个ArrayList
。你可以按照以下步骤进行:
String [] strings = new String [] {"1", "2" };
List<String> stringList = new ArrayList<String>(Arrays.asList(strings)); //new ArrayList is only needed if you absolutely need an ArrayList
像这样:
String[] words = {"000", "aaa", "bbb", "ccc", "ddd"};
List<String> wordList = new ArrayList<String>(Arrays.asList(words));
或者List myList = new ArrayList();
String[] words = {"000", "aaa", "bbb", "ccc", "ddd"};
Collections.addAll(myList, words);
Arrays.asList
,因为我之后需要向列表中添加元素。 addAll
完美地解决了这个问题 :) - MysticMagicϡList<String> list = Arrays.asList(array);
返回的列表将由数组支持,它就像一座桥梁,因此它将是固定大小的。
List
而不是ArrayList
,但答案并没有错。将数组复制到ArrayList
中并不总是必要的,有时你只需要将一个数组视为列表。请注意,创建一个真正的副本,例如new ArrayList<>(Arrays.asList(array))
,需要为列表的每个元素分配内存。例如,一个包含100000个Object
的数组仅指针引用就需要800kb的RAM。 - JackList myList = new ArrayList();
Collections.addAll(myList, filesOrig);
ArrayList<String> files = new ArrayList<String>(filesOrig.length);
for(String file: filesOrig) {
files.add(file);
}
Arrays.asList(T... a)
来实现评论中提到的功能。new ArrayList<String>(filesOrig.length);
可以防止支撑数组大小的增长。可能更快。 - zapl该代码将 ArrayList 转换为数组。MyClass[] arr = myList.toArray(new MyClass[myList.size()]);