杰點

          hello java

          集合

          9.集合框架
          1)基本概念:用于存放對象的對象(與數組類似.即集合也是對象.只能存對象)

          2)和數組的差異
          A.數組存放的內容由數組類型指定,集合存放的內容為Object類型的引用
          B.數組只有1種數據結構(按照索引存儲),集合的數據結構分為Set.List和Map三大類.每個類中還包含若干的小類
          C.數組的容量在創建時指定,無法在使用中動態擴展.所有集合類型的容量都是不定的.根據需求自動擴展

          3)基本組成
          A.接口:用于定義集合的功能框架
          B.實現類:實現對應的接口.實現集合的具體功能
          C.工具:提供對集合操作的輔助功能

          4)接口
          A.Collection
          定義存儲內容為單個對象的數據結構及相關的操作方法
          B.Set
          繼承Collection,存儲內容無序且不可重復
          C.List
          繼承Collection,存儲元素有序且可以重復
          D.SortedSet
          繼承Set.可以對存儲內容進行排序
          E.Map
          定義存儲內容為2個對象(鍵值對)的數據結構及相關的操作方法
          鍵(標識性,所以不可重復)對象無序且不可重復,值對象可以重復順序由對應的鍵對象決定
          F.SortedMap
          繼承Map,可以對鍵對象進行排序


          5)名詞解釋
          A.無序:存儲順序與放入順序無關
          B.有序:存儲順序與放入順序一致
          C.排序:按照一定的邏輯對內容進行排序,存儲順序依照排序的結果進行排列

          6)實現類
          A.List(3個實現類)
          ArrayList:內部存儲形式為數組,擅長查詢操作,對插入和刪除操作效率較低

          LinkedList:內部存儲形式為雙向鏈表.擅長插入和刪除操作,對查詢操作效率較低

          Vector:ArrayList的線程安全版本,可保證多線程并發防問時的數據準確和一致性,但對效率影響很大,實際開發中使用較少


          B.HashSet的重復性判斷
          i)在執行add()操作時進行,將加入的對象與集合中已存在的對象進行比較,滿足相等性條件時,待加入的對象無法加入集合中
          ii)比較內容
          將2個對象調用equals()結果為true
          將2個對象分別調用hashcode()的結果相同
          同時滿足以上2個條件則判斷兩個對象相同

          C.TreeSet
          構造器
          TreeSet()--使用默認的排序和重復性判斷邏輯
          注:只有少量類型(String.包裝類型)存在默認排序和重復性判斷邏輯,如Integer升序;如果對沒有默認的排序和重復性判斷邏輯的對象使用該操作,將在執行時產生ClassCastException
          TreeSet(Comparator)--使用指定的比較器實現排序和重復性判斷邏輯
          實現原理:在加入元素時執行比較(原有元素和待加入的元素),比較時調用比較器的compare().根據返回值決定排列的順序是否重復
          compare()的第一個參數--待加入的元素
          compare()的第二個參數--集合中原有的元素
          返回值
          >0    待加入元素在原有元素的右邊
          <0    待加入元素在原有元素的左側
          =0    相同,待加入元素不加入
          注:當>0或<0時,如集合的相應方向存在未比較的元素,則應繼續比較直至完全確定位置后才執行加入

          D.Map的實現類
          HashMap和HashTable的關系相當于ArrayList和Vector的關系
          HashMap的重復性判斷規則(key)
          在元素加入時(put)進行判斷.方式與HashSet完全相同
          E.TreeMap的排序和重復性判斷規則(key)
          在元素加入時(put)進行判斷.方式與TreeSet完全相同

           1 //List集合 實現類LinkedList ArrayList
           2 import java.util.*;
           3 public class ListTest {
           4 
           5     /**
           6      * @param args
           7      */
           8     public static void main(String[] args) {
           9         // TODO Auto-generated method stub
          10         String a="A",b="B",c="C",d="D",e="E"//定義字符串對象
          11         List<String> list= new LinkedList<String>(); //創建List集合
          12         list.add(a); //集合中添加元素
          13         list.add(e);
          14         list.add(d);
          15         Iterator<String> fristIterator=list.iterator();//創建集合迭代器
          16         System.out.println("修改前集合中的元素為");
          17         while(fristIterator.hasNext()){
          18             System.out.println(fristIterator.next()+" ");
          19         }
          20         list.set(1,b);
          21         list.set(2,c);
          22         Iterator<String> it=list.iterator();
          23         System.out.println("修改后集合中的元素為");
          24         while(it.hasNext()){
          25             System.out.println(it.next()+" ");
          26         }
          27 
          28     }
          29 
          30 }


           1 //MAP集合 和 泛型
           2 import java.util.*;
           3 public class MapTest {
           4 
           5     /**泛型應用
           6      * @param args
           7      */
           8     public static void main(String[] args) throws Exception {
           9         // TODO Auto-generated method stub
          10 
          11         //HashMap 定義泛型 類型變量
          12         HashMap<String,Integer> maps= new HashMap<String,Integer>();
          13         maps.put("zhangsan",28); //添加元素
          14         maps.put("lisi",33);
          15         maps.put("wangwu"23);
          16         
          17         //返回Set集合
          18         Set<Map.Entry<String, Integer>> entrySet= maps.entrySet();
          19         
          20         //迭代輸出集合
          21         for(Map.Entry<String,Integer> entry : entrySet)
          22         {
          23             System.out.println(entry.getKey()+" "+entry.getValue());
          24         }
          25         //轉換類型
          26         Object ob="abc";
          27         String x3= autoConvert(ob);
          28     }
          29     
          30     private static <T> T autoConvert(Object object){
          31         //泛型方法  類型轉換 
          32         return (T)object;
          33     }
          34     
          35     private static <T> void fillArray(T[] a,T obj ){
          36         //將某個類型的對象 填充到 對應類型的數組
          37         for(int i=0;i<a.length;i++)
          38             a[i]=obj;
          39     }
          40 
          41 }

          posted on 2010-12-29 13:31 杰點 閱讀(219) 評論(0)  編輯  收藏 所屬分類: JAVA


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          留言簿

          文章分類

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 开原市| 南陵县| 扶绥县| 克拉玛依市| 邵阳县| 景东| 耿马| 西丰县| 河津市| 蒙阴县| 八宿县| 玉山县| 房山区| 龙泉市| 凤阳县| 册亨县| 上思县| 板桥市| 瑞丽市| 墨脱县| 廉江市| 靖边县| 仙桃市| 永泰县| 青岛市| 普兰店市| 外汇| 年辖:市辖区| 福贡县| 襄城县| 微博| 寿宁县| 水富县| 衡南县| 报价| 满洲里市| 汕尾市| 长武县| 昭苏县| 定南县| 梅州市|