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 }

 

posted @ 2018-07-29 16:10  清风拂来  阅读(308)  评论(0编辑  收藏  举报