任何复杂的知识往往给人的感觉都是那么的不友好,所以,一定要静下心来,耐心去看、去读、去理解这些东西!!!
1.开篇
https://blog.csdn.net/weixin_43823808/article/details/107297465
https://blog.csdn.net/weixin_43823808/article/details/107298333
因为在以上这两篇博文中,我已经介绍了 Java 集合中的 Collection、List 接口通过 ArrayList 类来实现一些常用的方法,那么,在这篇博文中,我来介绍 Collection、List 接口中另一个实现类(LinkedList)的一些常用方法。
2.LinkedList类简介
LinkedList 是 List 接口的另一个实现类,LinkedList 内部包含有两个 Node 类型的 first 和 last 属性的双向循环链表结构 。
由于LinkedList的存储结构, LinkedList集合对于元素的遍历和查找效率较低;LinkedList集合对于元素的增删操作表现出很高的效率。(这个特点和 ArrayList 类是刚好相反的)
3.LinkedList类的特有方法
4.应用举例
import java.util.*; /*import java.util.LinkedList; import java.util.ArrayList; import java.util.Iterator;*/ public class LinkedListDemo { public static void main(String[] args) { LinkedList<String> link=new LinkedList<String>();//创建LinkedList链表集合对象 System.out.println("↓↓↓LinkedList集合常用方法如下↓↓↓"); System.out.println("---------------------------------------------"); System.out.println("创建第一个空的LinkedList集合,元素类型为String类:" + link); System.out.println("---------------------------------------------"); link.add(0,"链表元素0"); link.add(1,"链表元素1"); link.add(2,"链表元素2"); link.add(3,"链表元素3"); System.out.println("向link集合中指定位置添加4个元素:" + link); link.addFirst("开头"); link.addLast("结尾"); System.out.println("向link集合的开头和结尾添加元素:" + link); System.out.println("---------------------------------------------"); String first1=link.getFirst(); String last1=link.getLast(); String end1=link.get(2); System.out.println("获取link集合的第一个元素:" + first1); System.out.println("获取link集合的最后一个元素:" + last1); System.out.println("获取link集合中索引为2的元素:" + end1); System.out.println("---------------------------------------------"); String first2=link.removeFirst(); String last2=link.removeLast(); System.out.println("移除link集合中的第一个和最后一个元素:" + first2 + " " + last2); System.out.println("移除之后的link集合为:" + link); System.out.println("---------------------------------------------"); link.offer("链表元素4"); link.offerFirst("开头"); link.offerLast("结尾"); System.out.println("添加指定元素之后的link集合为:" + link); System.out.println("---------------------------------------------"); System.out.println("两种方法获取link集合的第一个元素:" + link.peek() + " " + link.peekFirst()); System.out.println("获取link集合的最后一个元素:" + link.peekLast()); System.out.println("---------------------------------------------"); System.out.println("移除并返回link集合的第一个元素:" + link.poll()); System.out.println("移除并返回link集合的第一个元素:" + link.pollFirst()); System.out.println("移除并返回link集合的最后一个元素:" + link.pollLast()); System.out.println("移除之后的link集合为:" + link); System.out.println("---------------------------------------------"); link.push("链表元素0"); System.out.println("添加指定元素之后的link集合为:" + link); System.out.println("---------------------------------------------"); String first3=link.pop(); System.out.println("移除并返回link集合的第一个元素:" + first3); System.out.println("移除之后的link集合为:" + link); System.out.println("---------------------------------------------"); System.out.print("将link集合转为数组,并将元素存入数组中:"); System.out.print("使用for-each循环遍历link集合中的所有元素:"); for(Object a : link) { System.out.print(a + " "); } System.out.println(); System.out.println("---------------------------------------------"); //第一步:使用集合中的iterator()方法,获取送代器的实现类对象 //第二步:使用Iterator接口接收(多态) Iterator iterator=link.iterator(); while(iterator.hasNext()) { /*第三步:使用Iterator接口中的hasNext()方法来判断集合中还有没有下一个元素 如果有下一个元素,那么就调用Iterator接口的next()方法,取出下一个元素,并且会把指针向后移一位 第四步:使用Iterator接口中的next()方法来取出集合中的下一个元素 以此类推,直到hasNext()方法返回false,表示到达了集合的末尾终止对元素的遍历*/ System.out.print(iterator.next() + " "); } System.out.println(); System.out.println("---------------------------------------------"); } }