1. 程式人生 > 實用技巧 >List集合介面、ArrayList集合、linkedList集合、vector集合

List集合介面、ArrayList集合、linkedList集合、vector集合

List集合介面

java.util.collection集合(介面)常用的兩個子類集合java.util.List集合(介面)和java.util.Set集合(介面)

java.util.List介面 extends collection介面

List介面的特點:

1.有序的集合(也稱為序列),儲存元素和取出元素的順序是一致的

2.有索引,包含了一些帶索引的方法

3.與set集合不同,允許儲存重複的元素。

List介面中帶索引的方法(特有)

void add(int index, E element);//在特定索引處新增資料,後面索引的資料向後移動一位
E get(int index);//返回指定索引的元素
E remove(int index)//刪除指定索引的元素,後面元素索引向前移動一位,同時返回刪除的元素
E set(int index, E element);//替換指定索引的元素,並返回被替換的元素

注意:操作索引的時候,一定要防止索引越界異常。

package mycollection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

//測試List集合中特有的操作索引來控制元素的方法
public class TestList01 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        System.out.println(list);//[a, b, c, d, e]

        //void add(int index, E element);//在特定索引處新增資料,後面索引的資料向後移動一位
        //在b與c之間插入“哈”
        list.add(2,"哈");
        System.out.println(list);//[a, b, 哈, c, d, e]

        //E get(int index);//返回指定索引的元素
        //獲取List集合中最後一個元素
        String end = list.get(list.size() - 1);
        System.out.println(end);//e

        //E remove(int index)//刪除指定索引的元素,後面元素索引向前移動一位,同時返回刪除的元素
        String remove = list.remove(2);//跟boolean remove = list.remove("哈");差不多,只不過返回值不一樣
        System.out.println(remove);//哈
        System.out.println(list);//[a, b, c, d, e]

        //E set(int index, E element);//替換指定索引的元素,並返回被替換的元素
        //將C替換成“替”
        String replace = list.set(2, "替");
        System.out.println(replace);
        System.out.println(list);

        //注意:操作索引的時候,一定要防止索引越界異常。
        //list.get(5);//丟擲IndexOutOfBoundsException,索引越界異常

        //對List遍歷的三種方法

        //普通for迴圈
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+"\t");
        }
        System.out.println();


        //使用迭代器
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.print(iterator.next()+"\t");
        }
        System.out.println();


        //增強for迴圈
        for (String s : list) {
            System.out.print(s+"\t");
        }


    }

}
List集合介面的實現子類java.util.ArrayList集合(最常用的List集合)

java.util.ArrayList集合底層是一個數組結構,元素增刪慢,查詢快

ArrayList集合適合多查詢,少增刪的操作

java.util.linkedList集合implements List 介面

Linklist集合特點:(包含List集合特點)

1.底層是一個連表結構:查詢慢,增刪快

2.裡面包含了大量操作首尾元素的方法

注意:使用Linklist集合特有的方法,不能使用多型

public void addFirst(E e)//在列表開頭插入指定元素
public void push(E e)//將元素推入列表(兩者相同)
public void addLast(E e)//在列表結尾插入指定元素
    
public E getFirst()//獲取列表開頭元素
public E getLast() //獲取列表結尾元素

public E removeFirst()//移除並返回第一個元素
public E pop()//移除並返回此列表的第一個元素。(兩者相同)
public E removeLast()//移除並返回最後一個元素
    
public boolean isEmpty()//判斷集合是否為空

package mycollection;

import java.util.LinkedList;

public class TestLinkedList01 {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        System.out.println(list);//[a, b, c, d, e]

        list.addFirst("哈哈");//  list.push("哈哈");兩者效果相同
        list.addLast("哦哦");
        System.out.println(list);//[哈哈, a, b, c, d, e, 哦哦]

        System.out.println(list.getFirst());//哈哈
        System.out.println(list.getLast());//哦哦

        System.out.println(list.removeFirst());//哈哈//相當於System.out.println(list.pop());
        System.out.println(list);//[a, b, c, d, e, 哦哦]
        System.out.println(list.removeLast());//哦哦
        System.out.println(list);//[a, b, c, d, e]

        System.out.println(list.isEmpty());//false
        list.clear();
        System.out.println(list.isEmpty());//true
    }
}
vector集合(最早的集合,jdk1.0就出現了,底層是陣列)---單執行緒,安全但執行緩慢,漸漸被ArrayList集合所取代