Java集合(List接口+其三個子類)

一、Link接口

      Link接口是Collection接口的子接口,他有三個子類,ArrayList,Vector,LinkedList,其特有的功能展示:

ListDemo.java
package com.test_02;

import java.util.*;

public class ListDemo {
    public static void main(String[] args) {
        //List接口是Collection的子接口,他是有序的(存儲和取出的元素一至),可重複的。
        List list = new ArrayList();
        //List接口的三個子對象
//        ArrayList array = new ArrayList();//沒什麼特殊的常用的方法
//        Vector vector = new Vector();
        //
//        LinkedList ll = new LinkedList();

        Student s1 = new Student("劉邦",40);
        Student s2 = new Student("項羽",22);
        Student s3 = new Student("薄姬",18);
        Student s4 = new Student("盧館",22);

        list.add(s1);
        list.add(s2);
        list.add(s3);

        //List的特有功能
        //添加功能
        list.add(1,s4);
        //獲取指定位置元素,可以加循環實現遍歷功能(size())
        System.out.println("序號爲一:"+list.get(1));
        //刪除指定位置元素,返回值是被刪除元素的值
        System.out.println("被刪除元素:"+list.remove(2));
        //修改元素,返回被修改的元素
        System.out.println("被修改元素,修改爲s3中值:"+list.set(1,s3));
        //特有遍歷迭代器ListIterator,他是Iterator的子類對象,用法一樣
//        Iterator it = list.iterator();
//        while(it.hasNext()){
//            Student s = (Student)it.next();
//            System.out.println(s);
//        }
        ListIterator it = list.listIterator();
        while(it.hasNext()){
            Student s = (Student)it.next();
            System.out.println(s);
            //特有的功能
            //previous();往前遍歷,但要先正向遍歷,才能逆向遍歷
            //hasPrevious();判斷往前是否有元素
        }
    }
}

上面代碼用到的Student對象:Student.java

package com.test_02;

public class Student {
    public String name;
    public int age;

    public Student(){}

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

二、List的三個子類對象

1.其中ArrayList沒有特有的常用對象,底層是數組,查詢快,增刪慢,線程不安全,效率高,最常用

2.Vector有其特有的添加功能和獲取功能,底層是數組,查詢快,增刪慢,線程安全,不常用

3.LinkList也有其特有的添加,獲取,刪除功能,底層是鏈表,查詢慢,增刪快,線程不安全,效率高。

查詢多用:ArrayList,增刪多用:LinkedList

VectorDemo.java
package com.test_02;

import java.util.Enumeration;
import java.util.Vector;

public class VectorDemo {
    public static void main(String[] args) {
        Vector v = new Vector();
        //添加功能,也可用簡單的add()
        v.addElement("hello");
        v.addElement("java");
        //遍歷
        for(int x=0;x<v.size();x++) {
            //獲取功能,也可用簡單的get()
            String s = (String)v.elementAt(x);
            System.out.println(s);
        }
        //迭代器,也可用簡單的Iterator iterator(),hasnext(),next()
        Enumeration en = v.elements();
        while(en.hasMoreElements()) {
            String s = (String)en.nextElement();
            System.out.println(s);
        }
    }
}
LinkedListDemo.java
package com.test_02;

import java.util.LinkedList;

public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList ll = new LinkedList();

        ll.add("hello");
        ll.add("world");
        ll.add("java");
        //添加功能,首尾添加,多個是模擬棧先進後出
        ll.addFirst("first");
        ll.addFirst("first1");
        ll.addFirst("first2");
        ll.addLast("end");
        System.out.println(ll);
        //獲取功 能,首尾獲取
        System.out.println("first:"+ll.getFirst());
        System.out.println("end:"+ll.getLast());
        //刪除功能,首尾刪除,返回值是刪除的元素
        System.out.println("Delfirst:"+ll.removeFirst());
        System.out.println("Delend:"+ll.removeLast());

        System.out.println(ll);
    }
}

 

發佈了20 篇原創文章 · 獲贊 32 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章