Collection接口之List接口

摘要:

在java中集合主要分為兩類,collection和map兩個大的接口,collection又分為list和set接口,這里記錄list接口中常用的方法。

list的特點(diǎn):

list存儲的數(shù)據(jù)是有序的,可重復(fù)的。

list的主要實(shí)現(xiàn)類:

  • ArrayList(可以看作是一個動態(tài)的數(shù)組,底層會自動擴(kuò)容,線程不安全,查詢效率高,插入效率低)

  • LinkedList(底層是雙向鏈表,查詢效率低,插入效率高)

  • vector(線程安全,基本不使用)

list中常用的方法(按功能分,可以從增、刪、改、查,插,長度,遍歷幾個方面描述)

  • 增:
    void add(Object obj) // 在末尾增加一個obj元素
    boolean addAll(int index, Collection ele) // 在指定的位置處添加所有的集合元素到集合中

  • 刪:
    remove(int index) 或者 remove(Object obj),分別表示移除指定索引的元素和移除指定值的元素,前者是List接口獨(dú)有的,后者是Collection共有的。

  • 改:
    Object set(int index,Object ele) // 設(shè)置指定index位置的元素為ele

  • 查:
    Object get(int index) // 獲取指定index位置的元素

  • 插:
    void add(int index, Object ele) // 在指定位置上增加ele元素

  • 長度
    int size()

  • 第一次出現(xiàn)元素的索引和最后一次出現(xiàn)的索引
    indexOf(Object obj) 和lastIndexOf(Object obj)

  • 遍歷:有三種

    • 迭代器Iterator
    • 增強(qiáng)for
    • 普通for或者while

demo示例

public class ArrayList{
  @Test
  public void test1(){
  
    ArrayList list = new ArrayList();
    /*在末尾添加*/
    list.add(123); // 添加元素
    list.add("abc");
    list.add(123) ;// 體現(xiàn)了list的可重復(fù)性
    list.add(new Date();
    /*在指定位置插入*/
    list.add(1, "BB"); // 在第二個位置上添加BB元素
    /*將一個集合的所有元素添加到一個集合中*/
    List list2 = Arrays.asList(1,2,3); // 通過數(shù)組工具類創(chuàng)建一個新的List
    list.addAll(list2); // 此時(shí)的集合中會多出三個元素1,2,3
    /*將一個集合作為一個整體添加到一個集合中*/
    List list3 = Arrays.asList("a","b","c"); 
    list.add(list3) // 將集合list3作為一個整體添加到list集合中

    /*返回123首次出現(xiàn)的索引*/
    int index = list.indexOf(123);
    /*返回123最后一次出現(xiàn)的位置*/
    index lastIndex = list.lastIndexOf(123);
    /*從集合中刪除元素*/
    Object o = list.remove(0) // 刪除第一個位置的元素, 這里刪除是指按照索引刪除,其實(shí)add元素的時(shí)候比如123,其實(shí)添加的是包裝類的對象,會自動裝箱,因此要移除指定值的元素,我們需要手動裝箱,如list.remove(new Integer(123));就會移除指定值的123
    /**改*/
    list.set(1, "cc"); // 將位置為2的元素修改為CC
    /*使用Iterator遍歷*/
    Iterator iterator = list.iterator();
    while(iterator.hasNext()){
      System.out.println(iterator.next());
    }

    /*使用增強(qiáng)for*/
    for(Object ob: List){
      System.out.println(ob);
    } 
    /*普通for*/
    for(int i = 0; i < list.size(); i++){
        System.out.println(list.get(i));
    }
  }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、基礎(chǔ)知識:1、JVM、JRE和JDK的區(qū)別:JVM(Java Virtual Machine):java虛擬機(jī)...
    殺小賊閱讀 2,560評論 0 4
  • 四、集合框架 1:String類:字符串(重點(diǎn)) (1)多個字符組成的一個序列,叫字符串。生活中很多數(shù)據(jù)的描述都采...
    佘大將軍閱讀 872評論 0 2
  • ? 在編寫java程序中,我們最常用的除了八種基本數(shù)據(jù)類型,String對象外還有一個集合類,在我們的的程序中到處...
    Java幫幫閱讀 1,551評論 0 6
  • 3.3 集合 一方面, 面向?qū)ο笳Z言對事物的體現(xiàn)都是以對象的形式,為了方便對多個對象的操作,就要對對象進(jìn)行存儲。另...
    閆子揚(yáng)閱讀 835評論 0 1
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,246評論 0 38

友情鏈接更多精彩內(nèi)容