Array-List-ArrayList

Array(数组):

声明需要指明长度,易于修改值和查找值

String[] s = new Sring[length];
//修改
s[i]="XXX" ;
//查找
find = s[j];

ArrayList:

声明不需要指明长度,便于插入、添加和删除数据

声明也不需要指明类型,可以放入不同的类型,但类型的转换会消耗性能(通过Object转化)

ArrayList list = new ArrayList()
//插入
list.add(i,"XXX");
//增加
list.add("XXX");
//删除
list.remove(i)
list.remove("XXX")

List(接口类):

不能直接声明对象,需借用ArrayList

声明需要指明类型,减少了类型转换,增加了类型安全

//正确
List list;
List<String> list1 = new ArrayList<String>(); //报错,'List' is abstract; cannot be instantiated List<Integer> list2 = new List<Integer>() ;

相互转换问题:

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

//asList将数组转化为内部类Arrays$ArrayList[]
List list3 = Arrays.asList(str);

//不能对其添加操作否则报错java.lang.UnsupportedOperationException
list3.add("hello");

//toArray将list转化为Object[]        
String[] str2 = (String[]) list3.toArray();//Object[]
原文地址:https://www.cnblogs.com/wsZzz1997/p/13177464.html