Java,java官網下載

來源:互聯網
上載者:User

Java,java官網下載
Java - 集合 * 本節要點1、Java 框架組合2、Collection 介面API3、Iterator 迭代器介面4、Collection 子介面之一:Set介面    > HashSet    LinkedHashSet  TreeSet5、Collection 子介面之二:List介面    > ArrayList    LinkedList    Vector6、Map 介面    > HashMap    TreeMap    Hashtable7、Collections 工具類

一、Java 集合概述    集合可以儲存數量不等的多個對象,還可用於儲存具有映像關係的關聯陣列,集合又被簡稱為容器 1、Java 集合分為兩種體系:Collection 和 Map    > Collection 介面        > Set :元素無序、不可重複的集合        > List :元素有序、可重複的集合    > Map 介面 :具有映射關係 "key - value對" 的集合,"key" 是唯一的 二、Collection 介面API 1、Collection 介面繼承樹 2、Collection 中的方法:    > size()  -> 返回集合中的元素個數    > add(Object obj)  -> 向集合中添加元素(任何類型的元素)    > addAll(Collection coll)  -> 將coll中包含的所有元素添加到當前集合中        Collection coll1 = Arrays.asList(1,2,3);        coll.addAll(coll1);    > isEmpty()  -> 判斷這個集合是否為空白,為空白返回 True    > clear()  -> 清空集合中的元素    *  System.out.println(coll);  -> 查看集合中的元素    > contains(Object obj)  -> 判斷這個集合中是否包含指定的obj元素,如果包含返回 True        如何存入集合中的元素是自訂類的對象,要求:自訂類重寫 equals() 方法    > containsAll(Collection coll)  -> 判斷當前集合中是否包含coll中所有的元素    > retainAll(Collection coll)  -> 保留當前集合與coll集合共同的元素,就是求當前集合和coll集合的交集,將結果返回給當前集合    > remove(Object obj)  -> 刪除集合中的某一個元素,刪除成功返回True,如果返回False說明裡面沒有    > removeAll(Collection coll)  -> 刪除當前集合中包含coll集合的所有元素,返回Boolean值    > equals(Object obj)  ->判斷兩個集合中的元素是否相同    > hashCode()  -> 算一下集合中的hash值,返回一個整數,主要在Set中用的多點,到時候在具體瞭解這個方法    > toArray()  -> 將集合轉換成數組        Object[] obj = coll.toArray();     > iterator()  -> 用來遍曆一個集合,返回一個Iterator介面實作類別的對象        Iterator iterator = coll.iterator();        Iterator.hasNext();    // 判斷是否有下一次元素        iterator.next();    //     返回集合中的元素,調用幾次,返回幾個 四、Collection 子介面之一:Set介面    HashSet(主要實作類別)、LinkedHashSet、TreeSet
    > 儲存無序的,Set中常用的方法都是Collection 下定義的 (無序 != 隨機,添加的順序和輸出的順序不一樣,但是運行多少次得到的結果是有序的,       真正的無序性指的是元素在底層儲存的位置是無序的,底層實現如C語言的鏈表)    > 不可重複的元素,當向Set中添加進相同的元素的時候,後面的這個不能添加進去    > 說明:要求添加進Set中的元素所在類,一定要重寫Object的equals() 方法和hashCode() 方法,進而保證Set中的元素的不可重複性    > Set中添加元素時,採用 Hash演算法,添加對象時,首先調用此對象所在類的hashCode()方法,計算此對象的雜湊值,此雜湊值決定了此對象在       Set中的儲存位置。若此位置之前沒有Object Storage Service,則這個對象直接儲存到此位置,若此位置已有Object Storage Service,再通過equals()方法比較這兩個對象       是否相同。如果相同,後一個對象就不能再添加進來        > 要求:hashCode() 和 equals() 方法屬性相同 1、HashSet() 中常用的方法都是Collection 中的方法 2、LinkedHashSet:使用鏈表維護了一個添加進集合中的順序,導致當我們遍曆LinkedHashSet 集合元素時,是按照添加進去的順序遍曆的    > 根據元素的 hashCode 值來決定元素的儲存位置,但它同時使用鏈表維護元素的次序,這使得元素看起來是以 插入順序儲存的    > 插入效能略低於 HashSet,但在迭代訪問Set裡的全部元素時,有很好的效能    > 不允許集合元素重複 3、TreeSet    > 只能添加同一類型的資料或對象    > 無法插入相同的元素,並且插入的資料按照從小到大的順序遍曆        當自訂類沒有實現 Comparable 介面時,當向TreeSet 中添加對象時,會報 ClassCastException異常錯誤    > 當向TreeSet 中添加自訂類的對象時,有兩種排序方法:①自然排序、②定製排序    > 自然排序:要求自訂類實現java.lang.Comparable 介面並重寫其 compareTo(Object obj) 抽象方法,在此方法中,指明按照自訂類的那個屬性進行排序        > 向 TreeSet 中添加元素時,首先按照compareTo() 方法進行比較,一旦返回0,雖然僅是兩個對象的此屬性值相同,但程式會認為這兩個對象是相同的,進           而後一個對象就不能添加進來        > compareTo() & hashCode() & equals() 三者之間保持一致    > 定製排序:要實現Comparator類/*  * TreeSet的定製排序: 見下面的步驟 compare()與hashCode()以及equals()三者保持一致!  */ @Test public void testTreeSet2() {  // 1.建立一個實現了Comparator介面的類對象  Comparator com = new Comparator() {   // 向TreeSet中添加Customer類的對象,在此compare()方法中,指明是按照Customer   // 的哪個屬性排序的。   @Override   public int compare(Object o1, Object o2) {    if (o1 instanceof Customer && o2 instanceof Customer) {     Customer c1 = (Customer) o1;     Customer c2 = (Customer) o2;     int i = c1.getId().compareTo(c2.getId());     if (i == 0) {      return c1.getName().compareTo(c2.getName());     }     return i;    }    return 0;   }  };  // 2.將此對象作為形參傳遞給TreeSet的構造器中  TreeSet set = new TreeSet(com);  // 3.向TreeSet中添加Comparator介面中的compare方法中涉及的類的對象。  set.add(new Customer("AA", 1003));  set.add(new Customer("BB", 1002));  set.add(new Customer("GG", 1004));  set.add(new Customer("CC", 1001));  set.add(new Customer("DD", 1001));   for (Object str : set) {   System.out.println(str);  } } 五、Collection 子介面之二:List介面 1、List新增的方法;List 的實作類別:ArrayList、LinkedList、Verctor    ArrayList : List的主要實作類別,List中新增了很多方法:   * 底層還是以數組實現         > void add(int index, Object ele)              在指定的索引位置添加元素 ,這種插入效率很低,如果在前面插入一個元素,後面的所有元素都要移位         > boolean addAll(int index, Collection eles)              在指定的索引位置添加一個eles集合         > Object get(int index)              擷取指定索引位置的元素         > int indexOf(Object obj)              返回 obj 在集合中首次出現的位置,沒有返回 -1         > int lastIndexOf(Object obj)              返回 obj 在集合中最後一次出現的位置,沒有返回 -1         > Object remove(int index)              刪除指定索引位置的元素,刪除後,後面的資料依次往前挪         > Object set(int index, Object ele)              修改指定索引位置的元素為ele         > List subList(int fromIndex, int toIndex)              返回List中索引從 fromIndex 到 toIndex 的子集    LinkedList 對於頻繁的插入刪除操作效率比ArrayList 高很多    Verctor 已經被淘汰了 六、Map 介面    > Map 與 Collection 並列存在,用於儲存具有映射關係的資料:Key-Value    > Map 中的 Key 和 Value 都可以是任何參考型別的資料    > Map 中的 Key 用 Set 來存放,不允許重複,即同一個 Map 對象所對象的類,須重寫 hashCode() 和 equals() 方法    > 常用 String 類作為 Map 的 "Key"    > Key 和 Value 之間存在單向一對一關聯性,即通過指定的 Key 總能找到唯一的,確定的 Value(Value 可以是重複的,Key是唯一的)。    > 一個 Key-Value 被稱為一個 Entry,所有的Entry 是用Set 存放的,是不可重複的* HashSet 類是 HashMap 類的特殊實現 1、Map 介面繼承樹            > TreeMap 按照添加進Map中的元素的 Key 的指定屬性進行排序    > HashMap (主要實作類別),Key 是用 Set 存放的,不可重複,Value 是用Collection 存放的,可以重複        > 向HashMap 中添加元素時,會調用 Key 所在類的 equals(0 方法,判斷兩個 Key ***    > Hashtable 已經幾乎不用了,        > Properties 比較常用,常用來處理屬性檔案,Key-Value都是String類型的    > LinkedHashMap 使用鏈表維護添加進Map中的順序,故遍曆 Map 時是按添加的順利遍曆的    2、Map 方法:    > Object put(Object key, Object value)  -> 向Map中添加一個元素    > Object remove(Object key)  -> 按照指定的e Key 值刪除此 Key-Value    > void putAll(Map t)    > void clear()  -> 清空    > Object get(Object key)    > boolean containsKey(Object key)    > boolean containsValue(Object value)    > int size()  -> 返回集合的長度    > boolean isEmpty()  -> 判斷集合是否為空白
    > boolean equals(Object obj)
    > keySet()  -> 遍曆 Key 集        Set set = map.keySet();        for (Object obj : set){            Ssytem.out.println(obj);        }    > values()  -> 遍曆 Value 集        Collection values = map.values();        Iterator i = values.iterator();        while (i.hasNext()){            System.out.println(i.next());        }    > entrySet()  -> 遍曆 Key - Value 對 3、如何遍曆 Key - Value 對:    ① 方式一    Set set1 = map.keySet();    for (Object obj : set1){        System.out.println("Key : " + obj + "<-->" + "Value: " + map.get(obj));    }    ② 方式二    Set set2 = map.entrySet();    for (Object obj : set2){        Map.Entry entry = (Map.Entry) obj;        System.out.println(entry);    } 4、使用Properties處理屬性檔案 @Test public void test6() throws FileNotFoundException, IOException{  Properties pros = new Properties();  pros.load(new FileInputStream(new File("jdbc.properties")));  String user = pros.getProperty("user");  System.out.println(user);  String password = pros.getProperty("password");  System.out.println(password); } 七、Collections 操作集合的工具類 * Collection 和 Collections 是有區別的    > Collections 可以操作 Collection 以及Map   1、常用方法:    > reverse(List),反轉List中元素的順序    > shuffle(List),對List 集合元素進行隨機排序    > sort(List),根據元素的自然順序對指定List 集合元素按升序排序    > sort(List,Comparator),根據指定的 Comparator 產生的順序對List 集合元素進行排序    > swap(List, int i, int j),將指定List 集合中的 i 處元素和 j 處元素進行交換    > Object max(Collection),根據元素的自然順序,返回給定集合中的最大元素    > Object max(Collection, Comparator),根據 Comparator 指定的順序,返回給定集合中的最大元素    > Object min(Collection),根據元素的自然順序,返回給定集合中的最小元素
    > Object min(Collection, Comparator),根據 Comparator 指定的順序,返回給定集合中的最小元素
    > int frequency(Collection, Object),返回指定集合中指定元素的出現次數    > void copy(List dest, List src),將 src 中的內容複寫到 dest 中    > boolean replaceAll(List list, Object oldVal, Object newVal),使用新值替換 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.