Java集合之LinkedList常见实例操作,实例说明

一.LinkedList常见操作

package List相关;
/**
 * LinkedList 链接列表
 * LinkedList:底层使用的链表数据结构。特点:增删速度快,查询速度稍慢;
 */

import java.util.Iterator;
import java.util.LinkedList;

class linkedlist_test {
    public static void main(String[] args){
        LinkedList linkedlist = new LinkedList();
        LinkedList linkedlist1 = new LinkedList();
        linkedlist1.add("what");
//        linkedlist1.add("zhangj");
        /**增*/
        System.out.println("------------新增操作------------");
        //在尾部进行添加元素
        linkedlist.add("what");
        linkedlist.add("?");
        //在指定位置添加元素
        linkedlist.add(1,"now");
        System.out.println(linkedlist);
        //在列表首位添加元素
        linkedlist.addFirst("one");
        //在列表尾部添加元素
        linkedlist.addLast("last");
        //在指定添加元素
        linkedlist.addAll(1,linkedlist1);
        System.out.println(linkedlist);
        /**查*/
        System.out.println("------------查询操作------------");
        System.out.println("linkedlist链表列表为:"+linkedlist);
        //获取首位元素
        Object obj1 = linkedlist.getFirst();
        //获取指定位置的元素
        Object obj2 = linkedlist.get(2);
        //获取尾部的元素
        Object obj3 = linkedlist.getLast();
        //查询链表列表的长度(元素个数)
        int a1= linkedlist.size();
        System.out.println("首位元素为:"+obj1+";第三个元素为:"+obj2+";尾部元素为:"+obj3+";内部元素个数为:"+a1);
        /**修改*/
        System.out.println("------------修改操作------------");
        System.out.println("修改之前的链表列表为:"+linkedlist);
        linkedlist.set(1,"what you");
        System.out.println("修改之后的链表列表为:"+linkedlist);

        //遍历列表
        //通过while方式来遍历
        Iterator it1 = linkedlist.listIterator();
//        while (it1.hasNext()){
//            System.out.println("while:"+it1.next());
//        }
        //通过for循环方式来遍历
        for(;it1.hasNext();){
            System.out.println("for:"+it1.next());
        }

        /**删
         * 在使用remove进行删除时,在进行删除操作的同时也会把此次删除的对象取出来
         * remove(intdex int)在进行删除操作时,若index超出角标边界,则会抛异常IndexOutOfBoundsException
         * 但是在使用poll类型进行操作时,若index超出角标边界,则会返回null
         *
         */
        System.out.println("------------删除操作------------");
        System.out.println("删除开始的链表列表为:"+linkedlist);
        //removeFirstOccurrence,在linkedlist中指定元素第一个出现
        linkedlist.add(1,"now");
        System.out.println("-----begin-------------"+"linkedlist="+linkedlist);
//        linkedlist.removeFirstOccurrence("now");
        //removeLastOccurrence,在linkedlist中指定元素第一个出现
        linkedlist.removeLastOccurrence("now");
        System.out.println("-----end---------------"+"linkedlist="+linkedlist);
        //删除指定元素对象,有指定元素则删除,无指定元素则不操作,返回值为Boolean类型
        Object obj5 = linkedlist.remove("?");
        System.out.println("删除链表列表的元素为:"+obj5);
        //删除指定索引位置的对象
        linkedlist.remove(0);
        //按索引删除首位元素,等价于linkedlist.remove(0);
        linkedlist.removeFirst();
        //按索引删除尾部元素
        Object O = linkedlist.removeLast();
        System.out.println(O);
        //删除所有的元素(清空列表)
        linkedlist.clear();
        //remove和poll删除方法的比较
//        linkedlist.remove(9);
        Object obj9=linkedlist.poll();
        System.out.println("obj9="+obj9);
        System.out.println("删除结束的链表列表为:"+linkedlist);
//其他方法简介,不作说明
//        E peek()
//        检索但不删除此列表的头(第一个元素)。
//        E peekFirst()
//        检索但不删除此列表的第一个元素,如果此列表为空,则返回 null 。
//        E peekLast()
//        检索但不删除此列表的最后一个元素,如果此列表为空,则返回 null 。
//        E poll()
//        检索并删除此列表的头(第一个元素)。
//        E pollFirst()
//        检索并删除此列表的第一个元素,如果此列表为空,则返回 null 。
//        E pollLast()
//        检索并删除此列表的最后一个元素,如果此列表为空,则返回 null 。
//        E pop()
//        从此列表表示的堆栈中弹出一个元素。

    }
}

二.一个实际中操作
概念简单说明:
栈堆:元素先进后出,类似水杯装水;
队列:元素先进先出,类似水管输水;
需求:实现一个类型栈堆或队列的功能容器
1.封装一个类似类型栈堆或队列的功能容器

import java.util.LinkedList;
public class linkedlist_test1 {
    /*实现类似栈堆或队列功能的容器*/
    private LinkedList linkedlist;
    //构造函数,一开始就生成一个链表队列linkedlist
    linkedlist_test1(){
        linkedlist = new LinkedList();
    }
    //定义向链表队列添加元素的功能
    public void addElement(Object obj){
        linkedlist.add(obj);
    }
    //定义一个类似栈堆功能(先进后出)
    public Object ZhanDui(){
        return linkedlist.removeFirst();
    }
    //定义一个类似队列功能(先进先出)
    public Object DuiLie(){
        return linkedlist.removeLast();
    }
    //定义一个判断linkedlsit是否为空的功能
    public boolean isNull(){
        return  linkedlist.isEmpty();
    }

2.调用封装好的类

public class Tset{
public static void main(String[] args){
        linkedlist_test1 test = new linkedlist_test1();
        String array[] = {"what","you","want"};
        test.addElement(1);
        test.addElement("you");
        test.addElement("and");
        test.addElement(array);
        //栈堆功能
//        while (!test.isNull()){
//            System.out.println(test.DuiLie());
//        }
        //队列功能
        for(;!test.isNull();){
            System.out.println(test.ZhanDui());
        }
    }
}

原文地址:http://blog.51cto.com/10836356/2151586

时间: 2024-11-07 18:23:06

Java集合之LinkedList常见实例操作,实例说明的相关文章

java集合-LinkedList

LinkedList概念与简单实例 LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用. 1:LinkedList提供了4个不同位置的添加数据的方法,分别为链头插入,链尾插入,节点前插入,节点后插入 2:由于LinkedList是双向链表,在查询数据方面提供了"从前往后"和"从后往前"两个查询方法 3:如果数据量大,删除频繁,只能用LinkedList. 特别注意: list.get(i),LinkedList的底层是一个链表,随机

Java集合类库 LinkedList 源码解析

基于JDK 1.7,和ArrayList进行比较分析 Java已经有了ArrayList,用来存放元素,对元素的操作都很方便.为什么还会有LinkedList呢?我们都知道ArrayList获取元素很快,但是插入一个元素很慢,因为ArrayList底层维护的是一个数组,往数组中的某个位置插入一个元素,是很消耗资源的. 而LinkedList插入元素很快,获取任意位置的元素却很慢.这是为什么呢?底层又是怎样实现的呢? 1.继承关系 LinkedList的继承关系图: LinkedList继承的是A

从源码分析java集合【LinkedList】

LinkedList是一个双端链表,他继承了AbstractSequentaiList顺序列表,实现了List,Deque,Cloneable,和Serializable接口.Deque是双端队列的接口,LinkedList有记录头的 first 和 尾的 last,所以我们可以对队列的两端进行操作.它还实现了Cloneable和Serializeble接口,它们分别是实现队列进行拷贝和序列化的接口. LinkedList的节点的结构是: private static class Node<E>

死磕 java集合之LinkedList源码分析

问题 (1)LinkedList只是一个List吗? (2)LinkedList还有其它什么特性吗? (3)LinkedList为啥经常拿出来跟ArrayList比较? (4)我为什么把LinkedList放在最后一章来讲? 简介 LinkedList是一个以双向链表实现的List,它除了作为List使用,还可以作为队列或者栈来使用,它是怎么实现的呢?让我们一起来学习吧. 继承体系 通过继承体系,我们可以看到LinkedList不仅实现了List接口,还实现了Queue和Deque接口,所以它既

JAVA简单的文件I/O操作实例

如果只是对文件进行普通的读写,可以不用文件流. 以下是实例: File file = new File("test1.txt"); //向文件写入数据的 PrintWriter pw = new PrintWriter(file); //用法简单 pw.println("weizhibin"); pw.println("haha"); pw.println("ok!end!"); pw.close(); //一定要close

Java集合四LinkedList

LinkedList简介 继承于AbstractSequentialList的双向链表,可以被当做堆栈.队列或双端队列进行操作. LinkedList本质上是一个双向链表,实现了Dequeue接口. LinkedList包含两个重要的成员:header和size. header是双向链表的表头,它是双向链表节点所对应的类Node的实例.Node中包含成员变量:prev.next.item.其中prev是该节点的上一个节点,next是该节点的下一个节点,item是该节点所包含的值. private

Java 集合之LinkedList源码分析

1.介绍 链表是数据结构中一种很重要的数据结构,一个链表含有一个或者多个节点,每个节点处理保存自己的信息之外还需要保存上一个节点以及下一个节点的指针信息.通过链表的表头就可以访问整个链表的信息.Java API中提供了链表的Java实现---LinkedList下.LinkedList是通过节点的连接实现链表的数据结构,向linkedList中插入或删除元素的速度是特别快,而随机访问的速度相对较慢,这个是由于链表本身的性质造成的,在链表中,每个节点都包含了前一个节点的引用,后一个节点的引用和节点

【JAVA集合】LinkedList

以下内容基于jdk1.7.0_79源码: 什么是LinkedList List接口的链表实现,并提供了一些队列,栈,双端队列操作的方法: LinkedList补充说明 与ArrayList对比,LinkedList插入和删除操作更加高效,随机访问速度慢: 可以作为栈.队列.双端队列数据结构使用: 非同步,线程不安全: 与ArrayList.Vector一样,LinkedList的内部迭代器存在“快速失败行为”: 支持null元素.有顺序.元素可以重复: LinkedList继承的类以及实现的接口

java集合之LinkedList

LinkedList:位于java.util包下 1 LinkedList概述 特点:底层数据结构是链表,增删快查询慢:实现非同步,线程不安全,效率高:有序(存取顺序一致):允许存储重复值:允许存储null值:易于实现堆栈.队列.双向队列结构: 常用构造: public LinkedList(): 空参构造,构建一个空列表. 常用方法:和ArrayList差不多,此处仅列出特有的功能方法. 1)添加功能: public addFirst(E e) :将指定元素插入此列表的开头. public a