Java—集合架構List

來源:互聯網
上載者:User

標籤:lin   move   get   string   長度   課程   增刪改   數組實現   print   

  • 集合的概念

  現實生活中:很多的事物湊在一起

  數學中的集合:具有共同屬性的事物的總和

  Java中的集合類:是一種工具類,就像是容器,儲存任意數量的具有共同屬性的對象

  • 集合的作用
  1. 在類的內部,對資料進行組織(針對作用與意義一樣的屬性,將他們放到一個集合中)
  2. 簡單而快速的搜尋大數量的條目
  3. 有的集合介面,提供了一系列排列有序的元素,並且可以在序列中快速的插入或刪除有關元素
  4. 有的集合介面,提供了映射關係,可以通過關鍵字(key)去快速尋找到對應的唯一對象,而這個關鍵字可以是任意類型
  • 與數組相比
  1. 數組的長度固定,集合長度可變
  2. 數組只能通過下標訪問元素,下標為整型,類型固定,而有的集合可以通過任意類型(下標)尋找所映射的具體對象
  • Java集合架構體繫結構

  Collection和Map介面是兩個根介面。

  Collection有三個子介面,分別是List(序列)、Queue(隊列)和Set(集)介面,其中List和Queue儲存的元素是排列有序的、可重複的,Set中儲存的元素是無序的、不可重複的。這三個子介面中List和Set是比較常用的。List 有個很常用也很重要的實作類別ArrayList(數組序列),Queue有個很重要是實作類別LinkedList(鏈表),LinkedList類同時也是List介面的實作類別,Set也有很重要的實作類別HashSet(雜湊集)。

  Map介面也有很多子介面,常用的是它的實作類別,其中有個很重要的實作類別HashMap(雜湊表)。

  在Collection中儲存的是一個一個獨立的對象。而Map內部,以一個Key一個Value兩個對象為一個映射去儲存資料,這樣的一個映射便是Entry類的執行個體,Entry類(索引值對)是Map的一個內部類,Key和Value可以是任意類型的對象。

  

  • Collection介面、子介面以及實作類別

  Collection介面是List、Queue和Set介面的父介面;定義了可用於操作List、Set和Queue的增刪改查的操作

  1. List介面及其實作類別——ArrayList

  List是元素有序並且可以重複的集合,被稱為序列;可以精確的控制每個元素的插入位置,或刪除某個位置元素;ArrayList是數組序列,底層是由數組實現的。

  以學生選課為例,介紹List的使用:

  1.1添加

  Course.java

package com.test.collection;/** * 課程類 * @author Administrator * */public class Course {    public String id;    public String name;    public Course(String id, String name){        this.id = id;        this.name = name;    }}

  Student.java

package com.test.collection;import java.util.HashSet;import java.util.Set;/** * 學生類 * @author Administrator * */public class Student {    public String id;    public String name;    public Set courses;//所選課程    public Student(String id, String name) {        this.id = id;        this.name = name;        this.courses = new HashSet();//執行個體化sourses(Set是介面,介面不能被直接執行個體化)    }}

  ListTest.java

package com.test.collection;import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java.util.List;/** * 備選課程類 * @author Administrator * */public class ListTest {    /**     * 用於存放備選課程的List     */    public List coursesToSelect;    public ListTest() {        this.coursesToSelect = new ArrayList();    }        /**     * 用於向coursesToSelect中添加備選課程     */    public void testAdd() {        Course c1 = new Course("1", "資料結構");//建立課程對象的執行個體        coursesToSelect.add(c1);//調用add方法,添加課程到備選課程List中        Course temp = (Course) coursesToSelect.get(0);//對象存入集合都變成Object,忽略對象之前的類型,取出時需類型轉換        System.out.println("添加了課程:" + temp.id + ":" + temp.name);                Course c2 = new Course("2", "C語言");        coursesToSelect.add(0, c2);//List中重載的另一個add()方法,可指定元素所添加的位置        Course temp2 = (Course) coursesToSelect.get(0);        System.out.println("添加了課程:" + temp2.id + ":" + temp2.name);                coursesToSelect.add(c1);//List中元素可以重複        Course temp0 = (Course) coursesToSelect.get(2);        System.out.println("添加了課程:" + temp0.id + ":" + temp0.name);                //以下方法會拋出數組下標越界異常        //Course c3 = new Course("3", "Java");        //coursesToSelect.add(4, c3);                Course[] course = {new Course("3", "離散數學"), new Course("4", "組合語言")};        coursesToSelect.addAll(Arrays.asList(course));        Course temp3 = (Course) coursesToSelect.get(3);        Course temp4 = (Course) coursesToSelect.get(4);        System.out.println("添加了兩門課程:" + temp3.id + ":" + temp3.name +                 temp4.id + ":" + temp4.name);                Course[] course2 = {new Course("5", "高等數學"), new Course("6", "電腦網路")};        coursesToSelect.addAll(2, Arrays.asList(course2));        Course temp5 = (Course) coursesToSelect.get(2);        Course temp6 = (Course) coursesToSelect.get(3);        System.out.println("添加了兩門課程:" + temp5.id + ":" + temp5.name +                 temp6.id + ":" + temp6.name);            }        public static void main(String[] args) {        ListTest lt = new ListTest();        lt.testAdd();    }}

   執行結果:

  添加了課程:1:資料結構
  添加了課程:2:C語言
  添加了課程:1:資料結構
  添加了兩門課程:3:離散數學4:組合語言
  添加了兩門課程:5:高等數學6:電腦網路

   1.2查詢

package com.test.collection;import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java.util.List;/** * 備選課程類 * @author Administrator * */public class ListTest {    /**     * 用於存放備選課程的List     */    public List coursesToSelect;    public ListTest() {        this.coursesToSelect = new ArrayList();    }        /**     * 取得List中的元素的方法     */    public void testGet() {        int size = coursesToSelect.size();        System.out.println("有以下課程選擇:");        for (int i = 0; i < size; i++) {            Course c = (Course) coursesToSelect.get(i);            System.out.println("課程:" + c.id + ":" + c.name);        }    }        /**     * 通過迭代器訪問集合元素     */    public void testIterator() {        Iterator it = coursesToSelect.iterator();        System.out.println("有以下課程選擇(通過迭代器訪問):");        while (it.hasNext()) {            Course c = (Course) it.next();            System.out.println("課程:" + c.id + ":" + c.name);        }    }        /**     * 通過for each方法訪問集合元素     */    public void testForEach() {        System.out.println("有以下課程選擇(通過for each訪問):");        for (Object obj : coursesToSelect) {            Course c = (Course) obj;            System.out.println("課程:" + c.id + ":" + c.name);        }    }        public static void main(String[] args) {        ListTest lt = new ListTest();        lt.testGet();        lt.testIterator();        lt.testForEach();    }}

  執行結果:

  有以下課程選擇:
  課程:2:C語言
  課程:1:資料結構
  課程:5:高等數學
  課程:6:電腦網路
  課程:1:資料結構
  課程:3:離散數學
  課程:4:組合語言

   1.3修改

public class ListTest {public void testModify() {        Course c = new Course("7", "毛概");        coursesToSelect.set(4, c);    }}

  修改後,有以下課程可以選擇:
  課程:2:C語言
  課程:1:資料結構
  課程:5:高等數學
  課程:6:網路技術
  課程:7:毛概
  課程:3:離散數學
  課程:4:組合語言

  1.4刪除

public class ListTest {public void testDelete() {        /*coursesToSelect.remove(4);*/        /*Course c = (Course) coursesToSelect.get(4);        coursesToSelect.remove(c); */        Course[] courses = {(Course) coursesToSelect.get(4), (Course) coursesToSelect.get(5)};        coursesToSelect.removeAll(Arrays.asList(courses));        System.out.println("刪除了課程");    }}

  刪除後,有以下課程可以選擇:
  課程:2:C語言
  課程:1:資料結構
  課程:5:高等數學
  課程:6:網路技術
  課程:4:組合語言

 

Java—集合架構List

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.