1. 程式人生 > >Java集合之LinkedList常見實例操作,實例說明

Java集合之LinkedList常見實例操作,實例說明

remove ati 使用 util 概念 dex bool 新增 obj

一.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());
        }
    }
}

Java集合之LinkedList常見實例操作,實例說明