String[]和List<String>的區別及相互轉換
阿新 • • 發佈:2018-11-03
Hello,everybody。好幾天不見啦,我一直在想著怎麼整場大戲,琢磨寫個好點的文章。(其實是因為玩了一個星期,emmmm,因為懶)。
1.兩者的區別
結構方面:
List< String >:泛型,非定長,可變。
String[]:陣列,定長,不可變。
使用方面:
他們的作用一樣,但是靈活性不一樣。
List< String >是可以方便使用的,如果不能確定陣列的長度,或者需要不斷的像中間插入一個字串,可以用List< String >。
String[]是定長的,如果能確定字串陣列的長度,可以使用String[]。
2.兩者的相互轉換
先看程式碼:
public class test {
public static void main(String[] args) {
//定義一個字元長度為5的字串
String[] strings = new String[5];
strings[0] = "a";
strings[1] = "b";
strings[2] = "c";
strings[3] = "d";
strings[4] = "e";
//呼叫Arrays中的asList方法將String[]轉化為List<String>
List<String> list = Arrays.asList(strings);
System.out.println("list<String>:"+list.toString());
//呼叫toArray方法將List<String>轉化為String[]
String[] strs = list.toArray(new String[]{});
System.out.println("String[]:"+Arrays.toString(strs));
}
}
輸出的結果是:
程式碼中已經寫明瞭兩者轉換時,所採用的方法,大家好好看程式碼哦。
本來到這裡就結束了,可是我在上面的過程又發現了一個好玩的(拿我麗穎鎮樓,雖然已成人婦,哭唧唧)。
下面,如果我在剛才的程式碼中加入了新增方法,那麼結果是什麼樣的呢,程式碼如下:
public class test {
public static void main(String[] args) {
//定義一個字元長度為5的字串
String[] strings = new String[5];
strings[0] = "a";
strings[1] = "b";
strings[2] = "c";
strings[3] = "d";
strings[4] = "e";
//呼叫Arrays中的asList方法將String[]轉化為List<String>
List<String> list = Arrays.asList(strings);
System.out.println("list<String>:"+list.toString());
//為list新增一個元素
list.add("f");
System.out.println("list<String>:"+list.toString());
}
}
大家猜猜看,這樣出來的結果是啥,下篇說哈,傳送門來了。UnsupportedOperationException異常