美文网首页
Java之String数组与List集合互转

Java之String数组与List集合互转

作者: 静美书斋 | 来源:发表于2019-07-12 14:26 被阅读0次

环境

  • JDK1.8
  • IDEA 2019.1

一、数组转为集合

1、转换为不可变集合

@Test
public void arrayToListTest() {
    String[] array = new String[]{"Apple", "Xiaomi", "Huawei", "Vivo", "Oppo"};
    // 从数组转为集合,集合list长度不可更改
   List<String> list = Arrays.asList(array);
    list.remove("Apple");
    list.forEach(s -> System.out.println(s));
}

asList的返回对象是一个Arrays内部类,并没有实现集合的修改方法。因此,使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException异常。

2、转换为可变集合

@Test
public void arrayToListTest() {
    String[] array = new String[]{"Apple", "Xiaomi", "Huawei", "Vivo", "Oppo"};
    // 从数组转为集合,集合list长度不可更改
//        List<String> list = Arrays.asList(array);
    // 从数组转为集合,集合list长度可更改
    List<String> list = new ArrayList<>(Arrays.asList(array));
    list.remove("Apple");
    list.add("one+");
    list.forEach(s -> System.out.println(s));
}

  总结:如果转换后的List只是用来遍历展示,可以用Arrays.asList();如果转换后的List还涉及元素得到添加或移除,此刻就必须new 一个java.util.ArrayList,然后包裹要转换的数组对象。

二、集合转为数组

@Test
public void listToArrayTest() {
    List<String> list = new ArrayList<>(2);
    list.add("Xiaomi");
    list.add("Huawei");
    String[] array = list.toArray(new String[0]);
    System.out.println(Arrays.toString(array));
}

直接使用toArray的无参方法存在问题,此方法返回值只能是Object[]类,若强转其他类型数组将出现ClassCastException错误。因此使用toArray带参方法,数组空间大小等于0时,动态创建与size相同的数组,性能最好。


参看

相关文章

网友评论

      本文标题:Java之String数组与List集合互转

      本文链接:https://www.haomeiwen.com/subject/yumekctx.html