[代码] 数组->List (StringArrayTest.java)
01 | import java.util.Arrays; |
02 | import java.util.List; |
03 | import java.util.ArrayList; |
04 |
05 | public class StringArrayTest |
06 | { |
07 | public static void main(String[] args) |
08 | { |
09 | String[] words = { "ace" , "boom" , "crew" , "dog" , "eon" }; |
10 |
|
11 | List<String> wordList = Arrays.asList(words); |
12 |
|
13 | for (String e : wordList) |
14 | { |
15 | System.out.println(e); |
16 | } |
17 | } |
18 |
在使用Arrays.asList()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常。这是由于Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(),add()等,所以throw UnsupportedOperationException。 解决方法是使用Iterator,或者转换为ArrayList List arrayList = new ArrayList(wordList);
|
[代码] 比较傻的做法
1 | String[] words = { ... }; |
2 | List<String> list = new ArrayList<String>(words.length); |
3 | for (String s : words) { |
4 | list.add(s); |
5 | } |
[代码] 这方法也还可以
1 | import java.util.Collections; |
2 |
3 | List myList = new ArrayList(); |
4 | String[] myStringArray = new String[] { "Java" , "is" , "Cool" }; |
5 |
6 | Collections.addAll(myList, myStringArray); |