作为List下面的两个重要实现类,ArrayList和LinkedList在开发中有着不同的应用,其不同点可以大致概括如下:
-
ArrayList是用线性表(数组)实现的,而LinkedList是用链表来实现的;
-
在查找和修改方面,ArrayList速度更快,因为ArrayList可以直接访问到数组的下标,而LinkedList需要从头节点依次向后遍历;
-
在添加和删除方面,LinkedList更有优势,因为ArrayList需要对数组后面的每一个元素进行移动,而LinkedList并不需要移动。
注:在使用集合类的时候不能使用内置类型(如int,char等),而必须要使用引用类型(如Integer,Character等)。
常用方法
ArrayList和LinkedList有几个共同的常用方法:
-
add(value) :在List尾部添加元素value;
-
get(index):返回下标为index元素的值;
-
remove(index):删除下标为index的元素;
-
set(index, value):将下标为index的元素值设置为value。
代码
下面代码中将List的几个常用方法,以及三种遍历方式展现出来。
List<String> list = new ArrayList<>();
//向list中添加 a b c三个字符串
list.add("a");
list.add("b");
list.add("c");
for(int i = 0; i < list.size(); i++)
{
System.out.println(list.get(i));
}
//输出 a b c
list.remove(0);
for(String x: list)
{
System.out.println(x);
}
//输出 b c
list.set(1, "d"); //改变所以1处的值,改为“d”
Iterator<String> iter = list.iterator(); //通过迭代器遍历
while(iter.hasNext())
{
System.out.println(iter.next());
}
//输出 b d
LinkedList的方法也比较相似,只是不同方法的时间复杂度有些不同。此外,LinkedList还包括一些对头节点和尾节点进行操作的函数。