1. 程式人生 > >Java————集合框架——list

Java————集合框架——list

目錄

(1)增加

(5)刪除

(6)替換

四:遍歷。

一:List介面(使用的初步介紹)

1:List集合的特徵

——:第一個是有序;

——:第二個集合可以重複;

(1)ArrayList和List:List是一個介面,ArrayLIst是List介面的實現類。

(常見的寫法:會把引用宣告為介面List型別)

public static void main(String[] args){
    List ls=new ArrayList();
    ls.add(9);
    System.out.println(ls.size());
}

(2)List介面的方法:因為ArrayList實現了List介面,所以List介面的方法ArrayList都實現了。

二:List介面中重要的實現類:

(1)ArrayList集合:ArrayList即陣列列表(可變的陣列)

——: 宣告方法: List<String> list=new ArrayList<String>(); 

——: 優點:可以根據索引位置對集合進行快速的隨機訪問 

——:  缺點:向指定的索引位置插入物件或刪除物件的速度較慢。                    

(2)LinkedList(用連結串列儲存物件)

 ——: List<String> list2 =new LinkedList<String>();

 ——:優點:便於向集合中插入和刪除物件

 ——: 缺點:隨機訪問集合中的物件時,效率較慢。

三:說明ArrayList實現類(陣列列表)

1:與陣列的區別

(1)使用陣列的侷限性:宣告為10的陣列長度,不用的陣列就浪費,超過10的個數,有放不下。

(2)ArrayList存放物件:為了解決陣列的侷限性,引入的容器類,最常見的容器類為ArrayList

                                          容器的容量會隨著物件的增加,自動增長,不用擔心會出現陣列的邊界問題

public static void main(String[] args){
    List ls=new ArrayList();
    ls.add(9);
    System.out.println(ls.size());
    ls.add(10);
    System.out.println(ls.size());
}

2:常用的方法

ArrayList 通過add()          新增元素                通過set()           替換元素                通過get()           取出元素                通過size()         這個方法,返回列表中元素的個數,//相當於陣列中length                通過clear()        清空元素                通過isEmpty()   判斷集合中是否有內容,true表示集合為空也就是沒有內容                通過remove()    刪除一個元素//,我們可以根據索引刪除,還可以根據具體的物件進行刪除                通過toArray()    是將集合直接轉化為Ojbect[]陣列。                                        兩種方法,帶引數 和 不帶引數的。  

(1)增加

add有兩種用法

——:第一種是直接add物件,把物件加在最後面

——:第二種是在指定的位置加物件

public static void main(String[] args){
    ArrayList a=new ArrayList();
    for(int i=0;i<5;i++){//第一種
        a.add(new Student("s1   "));
    }
    System.out.println(a);
    Student sstudent = new Student("s2");
    a.add(2,sstudent);//第二種
    System.out.println(a);
    System.out.println();
}

(2)contains判斷是否存在

通過contains判斷一個物件是否在容器中。 判斷的標準:是否為同一個物件,而不是name是否相同

程式碼:

public static void main(String[] args){
    ArrayList student = new ArrayList();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"+i));
    }
    System.out.println("student的學生");
    System.out.println(student);

    Student student1=new Student("Jay");
    student.add(student1);
    System.out.println(student);

    System.out.println(student.contains(student1));
    System.out.println(student.contains(new Student("Fern1")));


}

執行結果:

(3)獲取指定位置的物件

通過get獲取指定位置的物件,如果輸入的下標越界,一樣會報錯。

程式碼:

public static void main(String[] args){
    ArrayList student = new ArrayList();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"));
    }
    System.out.println(student.get(4));
    System.out.println(student.get(5));//超出了範圍會報錯

}

執行結果:

(4)獲取物件所處的位置indexOf

indexOf用於判斷一個物件在ArrayList中所處的位置,與contains一樣,判斷標準是物件是否相同,而非物件的name值是否相等。

程式碼:

public static void main(String[] args){
    ArrayList student = new ArrayList();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"));
    }
    Student student1=new Student("Jay");
    student.add(student1);
    System.out.println(student);
    System.out.println("Jay的位置"+student.indexOf(student1));
}

執行結果:

(5)刪除

remove用於把物件從ArrayList中刪除——heros.remove(specialHero); remove可以根據下標刪除ArrayList的元素——heros.remove(2);

程式碼:

public static void main(String[] args){
    ArrayList student = new ArrayList();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"));
    }
    Student student1=new Student("Jay");
    student.add(student1);
    System.out.println(student);

    student.remove(2);
    System.out.println("刪除下標為2的物件");
    System.out.println(student );

    student.remove(student1);
    System.out.println("刪除student1");
    System.out.println(student);

}

執行結果:

(6)替換

set用於替換指定位置的元素

程式碼:

public static void main(String[] args){
    ArrayList student = new ArrayList();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"+i));
    }
    Student student1=new Student("Jay");
    student.add(student1);
    System.out.println(student);

    student.set(1,new Student("Fern5"));
    System.out.println("把下標是1的元素,替換為Fern5");
    System.out.println(student);

}

執行結果:

(7)獲取大小:size

size 用於獲取ArrayList的大小

程式碼:

public static void main(String[] args){
    ArrayList student = new ArrayList();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"+i));
    }
    Student student1=new Student("Jay");
    student.add(student1);
    System.out.println(student);

    System.out.println("獲取ArrayList的大小");
    System.out.println(student.size());
}

執行結果:

(8)轉換為陣列

toArray可以把一個ArrayList物件轉換為陣列。 需要注意的是,如果要轉換為一個Hero陣列,那麼需要傳遞一個Hero陣列型別的物件給toArray(),這樣toArray方法才知道,你希望轉換為哪種型別的陣列,否則只能轉換為Object陣列。

程式碼:

public static void main(String[] args){
    ArrayList student = new ArrayList();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"+i));
    }
    Student student1=new Student("Jay");
    student.add(student1);
    System.out.println(student);

    Student s[]=(Student[])student.toArray(new Student[]{});
    System.out.println("陣列"+s);
}

執行結果:

(9)addAll:把另一個容器所有物件都加進來:

addAll 把另一個容器所有物件都加進來

程式碼:

public static void main(String[] args){
    ArrayList student = new ArrayList();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"+i));
    }
    System.out.println("student的學生");
    System.out.println(student);

    ArrayList anotherStudent = new ArrayList();
    anotherStudent.add(new Student("jiang1"));
    anotherStudent.add(new Student("jiang2"));
    anotherStudent.add(new Student("jiang3"));
    anotherStudent.add(new Student("jiang4"));
    System.out.println("anotherStudent的學生");
    System.out.println(anotherStudent);

    student.addAll(anotherStudent);
    System.out.println("把anotherStudent的元素加入到student中");
    System.out.println("合併後的student");
    System.out.println(student);
}

執行結果:

(10)清空:clear 清空一個ArrayList

程式碼:

public static void main(String[] args){
    ArrayList student = new ArrayList();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"+i));
    }
    System.out.println("student的學生");
    System.out.println(student);

    student.clear();
    System.out.println("使用clear清空");
    System.out.println(student);
}

執行結果:

四:遍歷。

1:for迴圈遍歷

程式碼

public static void main(String[] args){
    List<Student> student=new ArrayList<Student>();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"+i));
    }
    System.out.println(student);

    //第一種:for迴圈遍歷
    for(int i=0;i<student.size();i++){
        Student s=student.get(i);
        System.out.println(s);
    }
}

執行結果:

2:迭代器遍歷

程式碼:

public static void main(String[] args){
    List<Student> student=new ArrayList<Student>();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"+i));
    }
    System.out.println(student);

    //第二種:迭代器遍歷
    Iterator<Student> it=student.iterator();
    while(it.hasNext()){
        Student s=it.next();
        System.out.println(s);
    }//使用while的Iterator

    for(Iterator<Student> iterator=student.iterator();iterator.hasNext();){
        Student s=(Student)iterator.next();
        System.out.println(s);
    }//迭代器的for寫法
}

執行結果:

3:增強型for迴圈

程式碼:

public static void main(String[] args){
    List<Student> student=new ArrayList<Student>();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"+i));
    }
    System.out.println(student);
    //增強型for寫法
    for(Student s:student){
        System.out.println(s);
    }
}

結果:

五:本文僅供自己參考