LinkedList也像ArrayList一样实现了基本的接口,但是它执行某些从操作时比ArrayList更高效,但在随机访问方面要逊色一些。LinkedList中有一些方法虽然名字不同,但可以完成相同的操作,实现相同的功能,其中:
1、getFirst()和element()完全一样,它们都返回列表的头(第一个元素),并且不移除它,若List为空,则抛出NoSunchElementException。
peek()方法也是不移除且返回列表的第一个元素,不同之处是List为空时返回null。
2、remove()和removeFirst()也是一样的,移除并返回列表的第一个元素,若列表为空,抛出NoSunchElementException。
poll()也是移除并返回列表的第一个元素,若列表为空,返回null。
3、addFirst()、add()、addLast()相同,它们都将某个元素插入到列表的尾部。
4、removeLast()移除并返回列表的最后一个元素。
ListIterator和Iterator的区别
1、迭代器指向的位置是元素之前的位置。
当使用语句Iterator it=List.Iterator()时,迭代器it指向的位置是Iterator1指向的位置,当执行语句it.next()之后,迭代器指向的位置后移到Iterator2指向的位置。
二者的不同之处:
1、使用范围不同,iterator可以应用于所有的集合,Set、List和Map以及这些集合的子类型。而ListIterator只能用于List及其子类型。
2、ListIterator有add方法,可以向List中添加对象,而Iterator不能。
3、ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向遍历,但是iterator不可以。
4、ListIterator可以定位当前索引的位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。
5、都可以实现删除操作,但是ListIterator可以实现对象的修改,set()方法可以实现。Iterator仅能遍历,不能实现修改。