LinkedList是List中的另一种实现,如果在现实中需要从列表中间位置删除或添加元素,那么无疑使用Linkedlist更为合适。
方法1
public static void testLinkedList(){
LinkedList<String> list = new LinkedList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
//list.addFirst("bbb");
//list.addFirst("ccc");
LinkedList<String> listB = new LinkedList<String>();
listB.add("ddd");
listB.add("eee");
//listB.addFirst("eee");
listB.add("ccc");
list.addAll(listB);
Iterator<String> itor = list.iterator();
while(itor.hasNext()){
Object str = itor.next();
System.out.println(str);
System.out.println(list.size());
itor.remove();
}
if(list.contains("ccc"))
System.out.println("包含 ccc ");
if(list.containsAll(listB)){
System.out.println("包含 listB");
}else{
System.out.println("不包含 listB");
}
}
}
结果 :
aaa
6
bbb
5
ccc
4
ddd
3
eee
2
ccc
1
不包含 listB
执行以上代码我们发现与执行arraylist结果相同 , 但如果我们将list.add("ccc")改变为list.addFirst("ccc");那么就会有不同的结果,我们打开注释项,看看:
public static void testLinkedList(){
LinkedList<String> list = new LinkedList<String>();
list.add("aaa");
list.addFirst("bbb");
list.addFirst("ccc");
LinkedList<String> listB = new LinkedList<String>();
listB.add("ddd");
listB.addFirst("eee");
listB.add("ccc");
list.addAll(listB);
Iterator<String> itor = list.iterator();
while(itor.hasNext()){
Object str = itor.next();
System.out.println(str);
System.out.println(list.size());
itor.remove();
}
if(list.contains("ccc"))
System.out.println("包含 ccc ");
if(list.containsAll(listB)){
System.out.println("包含 listB");
}else{
System.out.println("不包含 listB");
}
}
}执行后发现结果如下:
ccc
6
bbb
5
aaa
4
eee
3
ddd
2
ccc
1
不包含 listB
结果说明,执行了list.addFirst("bbb");和list.addFirst("ccc");后先将bbb放到了list的第一个位置,后来将ccc放到第一个位置从而将bbb挤到了第二个位置,接着是list自己的第三位aaa ,然后是添加的listB的第一项eee接着listB的其他顺序项,也就说,list.addFirst(Object) 方法就是把对象放置到第一位,然后依次将原来位置的对象往后挪动。