1. 程式人生 > >2018年4月17日JAVA

2018年4月17日JAVA

lin 如意 框架 整形 aslist 內部類 get_id modify i++

JAVA中的集合類:

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

集合的作用:

一、在類的內部對數據進行組織(如果有些屬性的類型相同,但意義與作用不同,就不能把它們放在同一個集合中)

二、可以簡單而快速的搜索大數量的條目;

三、有的集合接口,提供了一些列排列有序的元素,並且可以在序列中間快速的插入或者刪除有關元素(就比如說做廣播體操時候,學生站隊,你可以讓某隊某列的學生出列,也可以讓某個學生插入到某隊某列)

四、有的集合接口,提供了映射關系,可以通過關鍵字(key)去快速查找到對應的唯一對象,而這個關鍵字可以是任意類型。(就比如說你乘坐大巴車,存放行李的車廂就相當於一個集合,車廂裏難免會有一些款式相同的行李箱,那麽如何區分這些款式相同的行李箱呢?我們可以在行李箱上做上標記,而這個標記就是咱們說的關鍵字key)

與數組相比---為何選擇集合而不選擇數組:

一、 數組的長度,或者說容量是固定的,如果數組的長度不夠用了,咱們就必須新建一個,然後把原數組的元素都給復制過去,這樣就會很麻煩。而集合的長度或者說容量,它是可以在運行時擴展的,使用時比較方便(你可以把數組想象成一個打狗棍,做出來是多長就是多長,把集合當成如意金箍棒,想變多長變多長)

二、 數組只能通過下表來訪問元素,類型固定(比如說下表只能是整形的),而有的集合可以通過任意類型查找所映射的具體對象

JAVA中的集合框架:

主要由兩大家族組成的,分別是Collection家族和Map家族,Collection和Map是兩個接口,JAVA集合框架中的兩個接口根。

Collection主要有三個子接口,分別是List,Queue,Set.其中List和Queue接口裏邊的元素是排列有序的,並且可以是重復的,而Set中的元素是無序的,且不可重復。(List和Set比較常用,List把它翻譯成序列,Queue翻譯成隊列,而Set翻譯成集)List中有一個很常用的實現類叫ArrayList,咱們把它叫做數組序列。Queue中有一個很重要的實現類叫LinkedList(叫鏈表,它同時也是List中的一個實現類),Set也有一個很重要的實現類,叫HashSet(哈希集)

Map也有眾多的子接口,其中最重要的是它的實現類,其中有一個是HashMap(哈希表)。

在collection中存儲的就是一個一個的對象,而Map的內部,會以一個key,一個value兩個對象為一個映射去存儲數據,而這樣一個映射就是一個Entry類的實例,這個Entry類它是Map的一個內部類,把它翻譯成鍵值對,一個鍵一個值湊成映射的一對,其中key和value都可以是任意類型的對象(可以形象的把collection想象成單身宿舍,裏邊是一個一個的單身狗,而把Map想象成存儲的一對一對的夫婦,他們都是成對出現的(key和value))

List接口及其實現類------ArrayList

(1)List是元素有序並且可以重復的集合,被稱為序列

(2)List可以精確的控制元素的插入位置或刪除某個位置元素

(3)ArrayList-----數組序列,是List的一個重要實現類

(4)ArrayList底層是由數組實現的

實現功能-----模擬學生選課功能

選擇課程(往集合中添加課程)

刪除所選的某門課程(刪除集合中的元素)

查看所選課程

修改所選課程

首先定義一個課程類

package Chen_collection;

/*

 * 課程類

 */

 

public classCourse {

    private String id;

    private String name;

    public String get_id(){

        return id;

    }

    public String get_name(){

        return name;

    }

    public Course(String i,String n){

        id=i;

        name=n;

    }

}

 

然後是備選課程類

packageChen_collection;

importjava.util.ArrayList;

importjava.util.Arrays;

importjava.util.Iterator;

importjava.util.List;

 

/*

 * 備選課程類

 */

publicclass ListTest {

         /*

          * 用於存放備選課程的List

          */

         public List courseToSelect;

         public ListTest(){//構造函數,用來初始化courseToselect

                   //由於List是一個接口,所以我們不能直接將它實例化

                   courseToSelect=newArrayList();//使用ArrayList()方法來實現這個List接口

         }

         /*

          * 用於向courseToSelect中添加備選課程

          */

         public void testAdd(){

                   //創建一個課程對象,並通過調用add()方法,添加到備選課程課程List中

                   Course cr1=newCourse("1","數據結構");

                   courseToSelect.add(cr1);

                   //Coursetemp=courseToSelect.get(0);//因為只在裏邊添加了一個元素,而List和數組一樣,也是從0開始的

                   //這裏會報錯是因為,對象存入集合,都變成Object類型,取出時需要用類型轉換

                   Coursetemp=(Course)courseToSelect.get(0);//因為只在裏邊添加了一個元素,而List和數組一樣,也是從0開始的

                  

                   System.out.println("添加了一個課程:"+temp.get_id()+":"+temp.get_name());

                  

                   Course[] temp1={newCourse("3","離散數學"),new Course("4","大學英語")};

                   courseToSelect.addAll(Arrays.asList(temp1));

                   Coursecour1=(Course)courseToSelect.get(1);

                   Course cour2=(Course)courseToSelect.get(2);

                   System.out.println("添加了兩門課程:"+cour1.get_id()+":"+cour1.get_name()+";"+cour2.get_id()+

                                     ":"+cour2.get_name());

         }

         /*

          * 取得List中的元素的方法

          */

         public void testGet(){

                   intsize=courseToSelect.size();

                   System.out.println("有如下課程待選:");

                  for(inti=0;i<size;i++){

                            Coursecr1=(Course)courseToSelect.get(i);

                            System.out.println("課程:"+cr1.get_id()+":"+cr1.get_name());

                   }

         }

         /*

          * 通過叠代器遍歷List

          * Iterator就是叠代器的意思

          * 這個叠代器本身也是一個接口

          */

         public void testIterator(){

                   Iterator it=courseToSelect.iterator();

                   System.out.println("有如下課程待選:");

                   while(it.hasNext()){

                            Coursecr6=(Course)it.next();

                            System.out.println("課程:"+cr6.get_id()+":"+cr6.get_name());

                   }

         }

         public void forEach(){

                   for(Objectobj:courseToSelect){

                            Courseb=(Course)obj;

                            System.out.println("課程"+b.get_id()+":"+b.get_name());

                   }

         }

         /*

          * 修改List中的元素

          */

         public void testModify(){

                   courseToSelect.set(1, newCourse("7","毛概"));

         }

         /*

          * 刪除List中的元素

          */

         public void testRemove(){

                   Course ct=(Course)courseToSelect.get(1);//把取出的類型強轉為Course類型

                   System.out.println("我是課程:"+ct.get_id()+":"+ct.get_name()+"我即將被刪除");

                   courseToSelect.remove(ct);

                   System.out.println("該課程成功被 刪除");

         }

         /*

          * 刪除多個元素

          */

         public void testRemoveAll(){

                   System.out.println("刪除第一個位置和第二個位置上的元素");

                   Course []tr={(Course)courseToSelect.get(0),(Course)courseToSelect.get(1)};//創建一個要刪除的課程的數組

                   courseToSelect.removeAll(Arrays.asList(tr));//將course數組轉化成一個集合,作為參數傳遞過去

                   forEach();

         }

         public static void main(String[] args){

                   ListTest lt=new ListTest();

                   lt.testAdd();

                   lt.testGet();

                   lt.testIterator();

                   lt.forEach();

                   lt.testModify();

                   lt.forEach();

                   lt.testRemove();

                   lt.forEach();

                   lt.testRemoveAll();

         }

}

2018年4月17日JAVA