ArrayList集合、String[]数组、String字符串

数组初始化时候必须指定长度,而ArrayList是动态数组,可以根据实际内容改变

//声明stsArr数组并初始化

String[] strArr = new String[]{ "aaa", "bbb" }; 

//声明list集合

ArrayList<String> list = new ArrayList<String>();

list.add("aaa");

list.add("bbb");

1、ArrayList转String[]-----集合转换成数组

使用集合转数组的方法,必须使用集合的toArray(T[] array),传入的是类型完全一样的数组,大小就是list.size()

正例:

  List<String> list = new ArrayList<String>(2);

   list.add("guan");    

   list.add("bao");      

   String[] array = new String[list.size()];      

  array = list.toArray(array); 

  //String[] strArr = (String[]) list.toArray(new String[list.size()]);

说明使用 toArray 带参方法,入参分配的数组空间不够大时,toArray 方法内部将重新分配 内存空间,并返回新数组地址;如果数组元素大于实际所需,下标为[ list.size() ]的数组 元素将被置为 null,其它数组元素保持原值,因此最好将方法入参数组大小定义与集合元素 个数一致。

2、String[]List<String>-----使用工具类 Arrays.asList()把数组转换成集合不能使用其修改集合相关的方 法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常

说明:asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。Arrays.asList 体现的是适配器模式,只是转换接口,后台的数据仍是数组。
  String[] str = new String[] { "a", "b" };

   List list = Arrays.asList(str);

第一种情况:list.add("c"); 运行时异常。

第二种情况:str[0]= "gujin"; 那么 list.get(0)也会随之修改

3、String[]转String

String str = String.join(",", strArr);

结果str:aaa,bbb

 

 

ArrayList 和LInkedList

 

ArrayList是线性表结构,查询效率高,数据的增删改,效率低

 

LinkedLIst 是链表结构,查询效率低,数据的增删改效率高。

 

posted @ 2017-10-20 15:08  howtosay  阅读(722)  评论(0编辑  收藏  举报