1. 程式人生 > >java 集合與陣列的互轉

java 集合與陣列的互轉

在實際工作中,我們經常需要Collection型別與陣列的互相轉換,javaAPI也提供了相應的方法幫我們完成操作。

//集合轉為陣列
Collection.toArray(T[] a)

//陣列轉為集合
Arrays.toList(T…a)

讓我們通過示例演示一下

 @Test
 public void testList2Array(){

  //構建一個集合
   List<String> list  = new ArrayList<>();
   list.add("123");
   list.add("345");
   list.add("456"
); //轉為陣列 String[] strings = list.toArray(new String[list.size()]); //遍歷 Arrays.stream(strings).forEach(System.out::println); }

輸出結果為:

123
345
456

再看一個數組轉集合的例子

    @Test
    public void array2List() {
        String[]arr = new String[]{"123","345","456"};
        List<String> list = Arrays.asList(arr);
        System.out.println(list);     
    }

陣列轉集合使用的是Arrays.asList(T...a)方法。這裡特別需要注意的是,使用這種方式轉來的list的型別是Arrays的一個內部類,擁有的方法數量有限,不具備add 、remove等的常用操作。(雖然這個內部類也叫ArrayList)

如下操作:

   @Test
    public void array2List() {
        String[]arr = new String[]{"123","345","456"};
        List<String> list = Arrays.asList(arr);

        list.add("567"
); //會報UnsupportedOperationException異常 System.out.println(list); }

若要經轉化後有增加刪除等操作,可轉為ArrayList或其他擁有完整操作的list類

   @Test
    public void array2List() {
        String[]arr = new String[]{"123","345","456"};
        //轉為ArrayList
        List<String> list = new ArrayList<>(Arrays.asList(arr));
        list.add("567");
        System.out.println(list);

    }