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;
Listlist1 = new ArrayList (); //报错,'List' is abstract; cannot be instantiated List list2 = new List () ;
相互转换问题:
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[]