转载自https://blog.csdn.net/Kerrwy/article/details/82421010
ArrayList源码分析(扩容机制jdk8)https://juejin.im/post/5d42ab5e5188255d691bc8d6
1.List与ArrayList
List是接口,ArrayList是用一个数组实现的List类。
一般情况下,建议使用
List list = new ArrayList();实现了泛型,应用更广泛。
2.Arrays与ArrayList
ArrayList是自动扩容的Arrays。有add().remove()这样的方法。
Array 可以容纳基本类型和对象,而 ArrayList 只能容纳对象
ArrayList容量可以动态增长,但牺牲效率;Array([])高效,但是容量固定无法改变。
Java中提供了Arrays类协助这几个操作:sort(),binarySearch(),equals(),fill(),asList().
Java中提供了ArrayList类协助这几个操作:如Index、IndexOf、Contains、Sort、Add、AddRange、Insert、InsertRange。
ArrayList相比于Arrays少了[ ]操作,而是利用get(i)配合索引值将它们取出。
//附加Arrays与ArrayList相互转换的代码 //List -- Arrays public class Test { public static void main(String[] args) { List<String> list=new ArrayList<String>(); //大小没有定 list.add("王利虎"); list.add("张三"); list.add("李四"); int size=list.size(); String[] array = (String[])list.toArray(new String[size]); for(int i=0;i<array.length;i++){ System.out.println(array[i]); //通过[]索引值 } } }
//Arrays -- List import java.util.Arrays; import java.util.List; public class Test { public static void main(String[] args) { String[] array=new String[3]; //定义时就定了大小 array[0]="王利虎"; array[1]="张三"; array[2]="李四"; List<String> list=Arrays.asList(array); for(int i=0;i<list.size();i++){ System.out.println(list.get(i)); //通过get方法来索引值 } } }