ht-3 linkedList特性
LinkedList内部封装的是双向链表数据结构,每个节点是一个Node对象。 Node对象中封装的是要被添加的元素,还有一个指向上一个Node对象的引用和 指向下一个Node对象的引用 , 与ArrayList容器相比,不同的容器有不同的数据结构,不同的数据结构操作起来性能不同。 链表数据结构,做插入删除的效率比较高,但查询效率比较低 。 而数组结构(线性)做查询时效率高,可以直接通过下标来直接找到元素,但插入和删除效率低, 插入或删除元素后数组其他元素要做移位操作, 当需要频繁进行增删操作,使用LinkedList效率高,当只需要查询功能时,使用ArrayList容器效率高
1 package com.iotek.list; 2 3 import java.util.Iterator; 4 import java.util.LinkedList; 5 6 public class LinkedListDemo { 7 8 public static void main(String[] args) { 9 10 LinkedList<String> sList = new LinkedList<String>(); 11 // List<String> sList = new LinkedList<String>(); 12 // 使用List接口的引用变量, 13 // sList.addFirst("chenchao");将会报错!!!因为List接口中没有这个方法,addFirst()和addLast()方法是Deque接口里特有的方法, 14 // 子类有,父类没有的方法,只能由子类对象来调用,父类的引用变量不能调用子类特有的方法 15 sList.add("zhangsan"); // 添加元素 16 sList.add("lisi"); 17 sList.add("wangwu"); 18 sList.add("rose"); 19 sList.add("mary"); 20 sList.add("jack"); 21 sList.addFirst("chenchao"); // 在首位置添加一个元素 22 sList.addLast("mandy"); // 在末尾位置添加一个元素 23 24 System.out.println(sList.toString()); 25 26 // LinkedList实现了List接口,List实现了Collection,Collection又实现了Iterable接口, 27 // 所以这里输出LinkedList容器中的元素,可以通过迭代器对象或者是foreach语句来输出 28 Iterator<String> it = sList.iterator(); // 产生一个迭代器对象 29 System.out.println("使用迭代器对象输出容器元素:"); 30 while (it.hasNext()) { // 判断容器中下一个元素不为空,则读取出来并赋给一个String类型的变量 31 String name = it.next(); 32 System.out.print(name + " "); 33 } 34 System.out.println("\n" + sList.removeFirst());// sList.removeFirst()方法 移除并返回链表的第一个元素 35 System.out.println("删除第一个元素后剩下的元素个数是:" + sList.size()); 36 sList.clear(); // 清空容器中的元素,在此处清空,pollFirst()会返回一个null 37 System.out.println(sList.pollFirst()); 38 System.out.println(sList.size()); 39 } 40 41 }