tbwshc

          Java集合框架中幾種集合的分析

                  集合可以理解為在內存中存放一組對象的容器,對象是數據的封裝,而對象又構成了集合。在java中的集合框架是一種線性的數據結構,但是它分為兩種,一種是物理結構,一種是邏輯結構。物理結構是一種連續存儲的結構,比如說數組;而邏輯結構可以理解為在內存塊中是不連續的,比如說鏈表,一個鏈表是分為兩中內容的,一個是該鏈表所存儲的數據,還有一個呢,那就是指向下一個鏈表的指針,通過指針而把表給連起來,稱之為鏈表。數組其實也是可以完成像集合一樣的存儲的,但是數組存在一定的弊端,數組一旦創建,其大小,類型是固定的,在特定的情況下不能更方便的使用,因此,為了與數組互補,集合也就應運而生了。
            在java.util包中存在三種最重要的集合,其分別是list,set,map,它們各自有各自的特點,這三種都是接口。其中list:1> list的實現類主要有ArrayList,Linkedlist及其Vector,list中存儲的數據是有序的,而且也是可以重復的,也就是說list按照添加的順序,依次的tb存儲在list下標從小到大的位置。做一個簡單的代碼測試
            public class Test {
            public static void main(String[] args) {
            Test test = new Test();
            test.testList();
            public void testList(){//類
            //創建一個List對象
            List list = new ArrayList();
            list.add(1);
            list.add(1);
            list.add(2);
            for(Object a:list){
            System.out.print(a+" ");
            }
            }
            此段代碼的運行結果為:{1 1 2}
            反應了其有序可重復的特點。
            2>set同樣是一個接口,它常用的實現類有Hashset,Treeset。set集合的存儲特點可以說是和list完全相反的,它是一種無序而且不能重復的存儲特點。同樣的用代碼做一個測試 public class Test {
            public static void main(String[] args) {
            Test test = new Test();
            test.testSet();
            public void testSet(){
            //創建Set對象
            Set set = new HashSet();
            set.add(1);
            set.add(2);
            set.add(5);
            set.add(3);
            set.add(4);
            set.add(1);
            set.add(null);
            System.out.println(set);
            Iterator it = set.iterator();
            while(it.hasNext()){//判斷有元素可迭代
            int i = it.next();
            System.out.print(i+" ");
            }
            }
            }
            }

            此段代碼的運行結果是:{1 2 3 4 5}
            可以說明其無序不可重復的特點。
            3>最后則是map集合,map的實現類常用的有Hashmap,Hashtable和Treemap。
            map與以上兩者稍微的有點不同,它是一種映射關系,在map中,存儲兩種數據,tb表達為map,而以上兩者都只有一個數據,而且都是通過下標來訪問的,map中k是不可以重復的,而v是可以重復的,進行一段代碼測試
            public class Test{
            public static void main(String[] args){
            testmap test=new testmap();
            public void testMap(){
            Map map = new HashMap();
            map.put(1, "aaa");
            map.put(2, "bbb");
            map.put(3,"ccc");
            map.put(2, "ddd");
            System.out.println(map);
            //獲取key集合(Set)
            Set set = map.keySet();
            Iterator it = set.iterator();
            while(it.hasNext()){
            int key = it.next();
            //通過key獲取對應的value值
            String value = map.get(key);
            System.out.println("key="+key+" value="+value);
            }
            }
            }
            }
            此段代碼的運行結果是:key=1 value=aaa;key=2 value=ddd;key=3 value=ccc。
            這三種集合各有其所試用的地方,對于像我這種初學者可以讓整個代碼簡化,思路更清晰。
            二:獲得各種數據存儲方式長度的方法。
            數組:定義一個數組Array[];那么獲得該數組長度的方法是使用其length方法。
            字符串: String st = "aaa";
            st.length();
            這里的length是字符串的一種屬性,而數組的length是一種方法。
            List:迭代或者直接通過下標輸出,list.size()
            set:迭代while(it.hasNext()){//判斷有元素可迭代
            int i = it.next();
            System.out.print(i+" ");
            }
            map:只能用迭代的方法,
            //獲取key集合(Set)
            Set set = map.keySet();
            Iterator it = set.iterator();
            while(it.hasNext()){
            int key = it.next();
            //通過key獲取對應的value值
            String value = map.get(key);
            System.out.println("key="+key+" value="+value);
            }
            map先是通過迭代器先得到key值,因為是一種一一對應的關系,所以用key值就可以得到value值了。

          posted on 2013-07-15 16:52 chen11-1 閱讀(246) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 会同县| 高安市| 嘉祥县| 延边| 呼玛县| 昔阳县| 台中市| 南雄市| 沁源县| 海丰县| 突泉县| 九龙坡区| 昌乐县| 习水县| 出国| 大关县| 正镶白旗| 三门峡市| 尼玛县| 兴海县| 静海县| 定兴县| 五大连池市| 三门峡市| 汨罗市| 佳木斯市| 牙克石市| 古田县| 文安县| 萨嘎县| 延津县| 杭州市| 台北市| 兴业县| 长子县| 炉霍县| 长岭县| 泾阳县| 灵寿县| 商水县| 防城港市|