[代碼] 數組->List (StringArrayTest.java)
01 |
import java.util.Arrays;
|
02 |
import java.util.List;
|
03 |
import java.util.ArrayList;
|
05 |
public class StringArrayTest |
07 |
public static
void main(String[] args) |
09 |
String[] words = { "ace" , "boom" ,
"crew" , "dog" ,
"eon" }; |
11 |
List<String> wordList = Arrays.asList(words); |
13 |
for (String e : wordList) |
15 |
System.out.println(e); |
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) {
|
[代碼] 這方法也還可以
1 |
import java.util.Collections;
|
3 |
List myList = new ArrayList(); |
4 |
String[] myStringArray = new String[] { "Java" , "is" ,
"Cool" }; |
6 |
Collections.addAll(myList, myStringArray); |