Java集合-----List詳解


    List中的元素是有序排列的而且可重復

   1.LinkedList

      LinkedList是非線程安全的,底層是基於雙向鏈表實現的

      LinkedList常用方法:

  •     toArray()  以正確的順序(從第一個到最后一個元素)返回一個包含此列表中所有元素的數組
  •     size()  返回此列表中的元素數
  •     set(int index,E element)  用指定的元素替換此列表中指定位置的元素
  •     removeLast()  從此列表中刪除並返回最后一個元素
  •     removeFirst()  從此列表中刪除並返回第一個元素
  •     remove(int index)  刪除該列表中指定位置的元素
  •     getFirst()  返回此列表中的第一個元素
  •     getLast()  返回此列表中的最后一個元素
  •     get(int index)  返回此列表中指定位置的元素
  •     add(E element)  將指定的元素追加到此列表的末尾
  •     add(int index,E element)  在此列表中的指定位置插入指定的元素
  •     addFirst(E element)  在該列表開頭插入指定的元素
  •     addLast(E element)   將指定的元素追加到此列表的末尾
  •     clear()  從列表中刪除所有元素

   2.ArrayList

     ArrayList是非線程安全的,底層是基於數組實現

     ArrayList常用方法:

  •    toArray()  以正確的順序(從第一個到最后一個元素)返回一個包含此列表中所有元素的數組
  •    subList(int fromIndex,int toIndex)  返回此列表中指定的 fromIndex (包括)和 toIndex之間的獨占視圖
  •    size()  返回此列表中的元素數
  •    set(int index,E element)  用指定的元素替換此列表中指定位置的元素
  •    removeRange(int fromIndex,int toIndex)  從這個列表中刪除所有索引在 fromIndex (含)和 toIndex之間的元素
  •    remove(int index)  刪除該列表中指定位置的元素
  •    isEmpty()  如果此列表不包含元素,則返回true
  •    get(int index)  返回此列表中指定位置的元素
  •    add(E element)  將指定的元素追加到此列表的末尾
  •    add(int index,E element)  在此列表中的指定位置插入指定的元素
  •    clear()  從列表中刪除所有元素
package com.gather;
/**
 * 人實體類
 * @author yyx 
 * 2019年2月27日
 */
public class Person {
    private String userName;
    private Integer userAge;

    public Person(String userName, Integer userAge) {
        super();
        this.userName = userName;
        this.userAge = userAge;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Integer getUserAge() {
        return userAge;
    }

    public void setUserAge(Integer userAge) {
        this.userAge = userAge;
    }

    @Override
    public String toString() {
        return "Person [userName=" + userName + ", userAge=" + userAge + "]";
    }

}
package com.gather;

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

/**
 * 
 * @author yyx 2019年2月27日
 */
public class LIstPractise {
    public static void main(String[] args) {
        List<Person> list = new ArrayList<>();
        Person p1 = new Person("張三", 22);
        Person p2 = new Person("李四", 23);
        Person p3 = new Person("王五", 18);
        list.add(p1);
        list.add(p2);
        list.add(p3);

        // 第一種遍歷方式:for循環
        for (int i = 0; i < list.size(); i++) {
            Person person = list.get(i);
            System.out.println(person);
        }
        System.out.println("----------------");
        // 第二種遍歷方式:foreach
        for (Person person : list) {
            System.out.println(person);
        }
        System.out.println("----------------");
        // 第三種遍歷方式:Iterator
        Iterator<Person> iterator = list.iterator();
        while (iterator.hasNext()) {
            Person person = iterator.next();
            System.out.println(person);
        }
        System.out.println("----------------");
        
        LinkedList<Person> linkedList=new LinkedList<>();
        linkedList.addFirst(p3);
        linkedList.add(p2);
        linkedList.addLast(p1);
        
        //getFirst()  返回此列表中的第一個元素
        System.out.println(linkedList.getFirst());
        //getLast()  返回此列表中的最后一個元素
        System.out.println(linkedList.getLast());        
        System.out.println("----------------");
        
        //toArray()  以正確的順序(從第一個到最后一個元素)返回一個包含此列表中所有元素的數組
        Object[] persons=linkedList.toArray();
        System.out.println(persons[0]);
    }
} 

   3.ArrayList和LinkedList的區別

  • ArrayList是實現了基於動態數組的數據結構,LinkedList基於鏈表的數據結構 
  • 對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指針 
  • 對於新增和刪除操作add和remove,LinedList比較占優勢,因為ArrayList要移動數據
  • ArrayList沒有實現Queue隊列接口,LinkedList實現了Queue接口

   4.Vector

     Vector是線程安全的,底層是基於動態數組實現

     Vector常用方法:

  •       add(E element)  將指定的元素追加到此Vector的末尾
  •       add(int index,E element)  在此Vector中的指定位置插入指定的元素 
  •       elementAt(int index)  返回指定索引處的組件
  •       get(int index)  返回此向量中指定位置的元素
  •       removeElementAt(int index)  刪除指定索引處的組件
  •       removeRange(int fromIndex,int toIndex) 從此列表中刪除所有索引為 fromIndex (含)和 toIndex之間的元素
package com.gather;

import java.util.Iterator;
import java.util.Vector;
/**
 * 大小可以動態變化,其存儲由容器自動處理
 * @author yyx 
 * 2019年2月28日
 */
public class VectorPractise {
    public static void main(String[] args) {
        Vector<Person> vector = new Vector<>();
        Person p1 = new Person("張三", 22);
        Person p2 = new Person("李四", 23);
        Person p3 = new Person("王五", 18);
        vector.add(p1);
        vector.add(p2);
        vector.add(p3);

        Iterator<Person> iterator = vector.iterator();
        while (iterator.hasNext()) {
            Person person = iterator.next();
            System.out.println(person);
        }
    }
}

 

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM