杰點(diǎn)

          hello java

          集合

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

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

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

          4)接口
          A.Collection
          定義存儲內(nèi)容為單個(gè)對象的數(shù)據(jù)結(jié)構(gòu)及相關(guān)的操作方法
          B.Set
          繼承Collection,存儲內(nèi)容無序且不可重復(fù)
          C.List
          繼承Collection,存儲元素有序且可以重復(fù)
          D.SortedSet
          繼承Set.可以對存儲內(nèi)容進(jìn)行排序
          E.Map
          定義存儲內(nèi)容為2個(gè)對象(鍵值對)的數(shù)據(jù)結(jié)構(gòu)及相關(guān)的操作方法
          鍵(標(biāo)識性,所以不可重復(fù))對象無序且不可重復(fù),值對象可以重復(fù)順序由對應(yīng)的鍵對象決定
          F.SortedMap
          繼承Map,可以對鍵對象進(jìn)行排序


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

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

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

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


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

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

          D.Map的實(shí)現(xiàn)類
          HashMap和HashTable的關(guān)系相當(dāng)于ArrayList和Vector的關(guān)系
          HashMap的重復(fù)性判斷規(guī)則(key)
          在元素加入時(shí)(put)進(jìn)行判斷.方式與HashSet完全相同
          E.TreeMap的排序和重復(fù)性判斷規(guī)則(key)
          在元素加入時(shí)(put)進(jìn)行判斷.方式與TreeSet完全相同

           1 //List集合 實(shí)現(xiàn)類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>(); //創(chuàng)建List集合
          12         list.add(a); //集合中添加元素
          13         list.add(e);
          14         list.add(d);
          15         Iterator<String> fristIterator=list.iterator();//創(chuàng)建集合迭代器
          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     /**泛型應(yīng)用
           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         //轉(zhuǎn)換類型
          26         Object ob="abc";
          27         String x3= autoConvert(ob);
          28     }
          29     
          30     private static <T> T autoConvert(Object object){
          31         //泛型方法  類型轉(zhuǎn)換 
          32         return (T)object;
          33     }
          34     
          35     private static <T> void fillArray(T[] a,T obj ){
          36         //將某個(gè)類型的對象 填充到 對應(yīng)類型的數(shù)組
          37         for(int i=0;i<a.length;i++)
          38             a[i]=obj;
          39     }
          40 
          41 }

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


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


          網(wǎng)站導(dǎo)航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          留言簿

          文章分類

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 通山县| 灵丘县| 嘉峪关市| 临夏市| 乐山市| 饶阳县| 绥滨县| 东明县| 香河县| 建始县| 巴楚县| 娱乐| 江口县| 青神县| 赫章县| 邵阳市| 东安县| 洱源县| 兴业县| 永州市| 逊克县| 澜沧| 米脂县| 毕节市| 九台市| 迁安市| 仁布县| 余干县| 外汇| 宾阳县| 肇东市| 万盛区| 长治县| 青阳县| 澄城县| 岢岚县| 来安县| 南澳县| 喜德县| 名山县| 仲巴县|