zoukankan      html  css  js  c++  java
  • java笔记之list集合LinkedList<三>

    LinkedList:链表实现, 增删快, 查找慢

    由于LinkedList:在内存中的地址不连续,需要让上一个元素记住下一个元素.所以每个元素中保存的有下一个元素的位置.虽然也有角标,但是查找的时候,需要从头往下找,显然是没有数组查找快的.但是,链表在插入新元素的时候,只需要让前一个元素记住新元素,让新元素记住下一个元素就可以了.所以插入很快.

    由于链表实现, 增加时只要让前一个元素记住自己就可以, 删除时让前一个元素记住后一个元素, 后一个元素记住前一个元素. 这样的增删效率较高。

    但查询时需要一个一个的遍历, 所以效率较低。

    1:特有方法介绍

    addFirst(E e)

    addLast(E e)

    getFirst()

    getLast()

    removeFirst()

    removeLast()

    如果集合中没有元素,获取或者删除元素抛:NoSuchElementException

    public class linkedLixt {
    
        public static void main(String[] args) {
            LinkedList<String> link = new LinkedList<String>();
            link.add("你");
            link.add("是");
            link.add("我");
            link.add("的");
            link.add("眼");
            System.out.println("初始化链表:"+link);
            link.addFirst("hello");
            link.addLast("world");
            System.out.println(" 增加头和尾之后的链表: " + link);
        }
    
    }

    输出结果:

    初始化链表:[你, 是, 我, 的, 眼]
    增加头和尾之后的链表: [hello, 你, 是, 我, 的, 眼, world]

    public class linkedLixt {
    
        public static void main(String[] args) {
            LinkedList<String> link = new LinkedList<String>();
            link.add("你");
            link.add("是");
            link.add("我");
            link.add("的");
            link.add("眼");    
            System.out.println("取出第一个  :"+link.getFirst());
            System.out.println("取出最后一个  :"+link.getLast());
        }
    
    }

    输出结果:

    取出第一个 :你
    取出最后一个 :眼

    public class linkedLixt {
    
        public static void main(String[] args) {
            LinkedList link = new LinkedList();
            link.add("你");
            link.add("是");
            link.add("我");
            link.add("的");
            link.add("眼");
            System.out.println("移除第一个  :"+link.removeFirst());
            System.out.println("移除最后一个  :"+link.removeLast());
            System.out.println("移除后的:"+link);
        }
    
    }

    输出结果:

    移除第一个 :你
    移除最后一个 :眼
    移除后:[是, 我, 的]

    2:数据结构

    2.1:栈 (1.6

    先进后出

    push() 

    pop()

    2.2:队列(双端队列1.5

    先进先出

    offer()

    poll()

    练习数据结构的特点:堆栈练习

    import java.util.LinkedList;
    
    class Stacklist{
        LinkedList stacklist;
        public Stacklist() {
            stacklist=new LinkedList();        
        }
        public void add(Object o){//添加方法
            stacklist.push(o);
        }
        public Object remove(){//移除方法
            return stacklist.pop();    
        }
        public int size(){//获取容量
            return stacklist.size();
        }
    }
    public class linklisted {
        public static void main(String[] args) {
            Stacklist stacklist=new Stacklist();
            stacklist.add("路飞");
            stacklist.add("娜美");
            stacklist.add("索隆");
            System.out.println("堆栈存储效果:");
            while (stacklist.size()>0) {
                System.out.println(stacklist.remove());
            }
        }
    }

    输出结果:

    堆栈存储效果:
    索隆
    娜美
    路飞

    队列结构练习:

    import java.util.LinkedList;
    
    class QueueList{
        LinkedList queuelist;
        public QueueList() {
            queuelist=new LinkedList();        
        }
        public void add(Object o){//添加方法
            queuelist.offer(o);
        }
        public Object remove(){//移除方法
            return queuelist.poll();    
        }
        public int size(){//获取容量
            return queuelist.size();
        }
    }
    public class OfferPull {
    
        public static void main(String[] args) {
            QueueList queueList=new QueueList();
            queueList.add("佐助");
            queueList.add("鸣人");
            queueList.add("鼬");
            int size=queueList.size();
            System.out.println("先进先出效果:");
            for (int i = 0; i < size; i++) {
                System.out.println(queueList.remove());
            }
        }
    }

    输出结果:

    先进先出效果:
    佐助
    鸣人

    3:返回逆序的迭代器对象      

    descendingIterator()   返回逆序的迭代器对象

    import java.util.Iterator;
    import java.util.LinkedList;
    public class Demo04 {
        public static void main(String[] args) {
            LinkedList list =new LinkedList ();
            list.add("张良");
            list.add("卫庄");
            list.add("盖聂");
            Iterator it=list.descendingIterator();
            System.out.println("剑术排名:");
            while (it.hasNext()) {
                System.out.println(it.next());
            }
        }
    }

    输出结果:

    剑术排名:
    盖聂
    卫庄
    张良

  • 相关阅读:
    Application package 'AndroidManifest.xml' must have a minimum of 2 segments.
    让“是男人就下到100层”在Android平台上跑起来
    移植一个cocos2d-x游戏
    cocos2d-x宏定义
    职场之需求
    cocos2d-x for android配置 & 运行 Sample on Linux OS
    input函数出现的问题(Python)
    职场之英语
    职场之随手记
    应用商店后台MIS的一些思考
  • 原文地址:https://www.cnblogs.com/AllenRandolph/p/6945318.html
Copyright © 2011-2022 走看看