1. 程式人生 > >String[]和List<String>的區別及相互轉換

String[]和List<String>的區別及相互轉換

在這裡插入圖片描述

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異常
在這裡插入圖片描述