Java培訓-集合

來源:互聯網
上載者:User

標籤:java培訓   結構圖   vector   二叉樹   null   

  1. 集合架構體繫結構

    650) this.width=650;" src="http://static.oschina.net/uploads/space/2015/0714/171133_0wqx_2414224.jpg" alt="171133_0wqx_2414224.jpg" />

  2. 集合架構體繫結構圖解釋:

    虛點框:代表介面,虛線框:代表抽象介面,實線框:代表實現介面的類

  3. Collection和collections的區別:

    Collection是集合類的上級介面,繼承與他的介面主要有Set 和List.
    Collections是針對集合類的一個協助類,他提供一系列靜態方法實現對各種集合的搜尋、排序、線
    程安全化等操作。

  4. Map常用子類

    Hashtable:雜湊表,是同步的,不允許null鍵和null值

    HashMap:雜湊表,是不同步的,允許null鍵和null值

    TreeMap:二叉樹,不同步,可以對Map集合中的鍵進行排序

  5. Collection介面常用子類Set和List:

    Set:不記錄元素的儲存順序,且不允許有重複資料

    List:記錄元素的儲存順序,且允許有重複資料。

  6. ArrayList,Vector, LinkedList的儲存效能和特性

    ArrayList 和Vector都是使用數組方式儲存資料,此數組元素數大於實際儲存的資料以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等記憶體操作,所以索引資料快而插入資料慢,Vector由於使用了synchronized方法(安全執行緒),通常效能上較ArrayList差,而LinkedList使用雙向鏈表實現儲存,按序號索引資料需要進行前向或後向遍曆,但是插入資料時只需要記錄本項的前後項即可,所以插入速度較快。

  7. ArrayList:利用數組實現,解決了數組中定長到變長,類型多樣化的問題。

    Iterator:迭代器介面  方法:hasNext() 判斷迭代器中是否有值,next() 取某一個值並將指標移動到下一個單

  8. 總結:

        如果涉及到堆棧,隊列等操作,應該考慮用List,對於需要快速插入,刪除元素,應該使用LinkedList,如果需要快速隨機訪問元素,應該使用ArrayList。
         如果程式在單線程環境中,或者訪問僅僅在一個線程中進行,考慮非同步的類,其效率較高,如果多個線程可能同時操作一個類,應該使用同步的類。
         要特別注意對雜湊表的操作,作為key的對象要正確複寫equals和hashCode方法。
         盡量返回介面而非實際的類型,如返回List而非ArrayList,這樣如果以後需要將ArrayList換成LinkedList時,用戶端代碼不用改變。這就是針對抽象編程。

  9. 取ArrayList中的值:

public static void test1(){        ArrayList aList=new ArrayList();        aList.add(5);        aList.add(2);        aList.add(0);        aList.add("我");        aList.add(‘a‘);        //for迴圈取值        for (int i = 0; i < aList.size(); i++) {            Object obj=aList.get(i);            System.out.println(obj);        }        //iterator迭代器取值        Iterator it=aList.iterator();        while(it.hasNext()){            Object obj=it.next();        }        //迭代器加for迴圈取值        for (Iterator iterator = aList.iterator(); iterator.hasNext();) {            Object object =iterator.next();                     }    }

10.取Map集合中的索引值對:Key鍵用Set集合儲存,value用collection集合儲存,索引值對用Set集合儲存

public static void putElements(){        hashMap.put("huang", "ming");        hashMap.put("chao", "sheng");        hashMap.put("shi", "tian");        int size=hashMap.size();        System.out.println("size="+size);    }    //key set集合    public static void getKey(){        Set keyset=hashMap.keySet();        Iterator it=keyset.iterator();        while(it.hasNext()){            Object key=it.next();            System.out.println("keys="+key);        }    }    //value collection介面    public static void getValues(){        Collection coll=hashMap.values();        Iterator it=coll.iterator();        for (Iterator iterator = coll.iterator(); iterator.hasNext();) {            Object value = iterator.next();            System.out.println("values="+value);        }    }    //key-value entrySet集合    public static void getKV(){        //方式一  增強for迴圈擷取        for(Object obj:hashMap.entrySet()){            Entry entry=(Entry) obj;            Object key=entry.getKey();            Object value=entry.getValue();            System.out.println("key="+key+";value="+value);        }                 //方式二 通過Key擷取Value        for(Object obj:hashMap.keySet()){            Object key=obj;            Object value=hashMap.get(obj);            System.out.println("key="+key+";value="+value);        }                 //方式三 通過內部類Entry擷取key和value        Set entrySet=hashMap.entrySet();        Iterator it=entrySet.iterator();        while(it.hasNext()){            Entry entry=(Entry) it.next();            Object key=entry.getKey();            Object value=entry.getValue();            System.out.println("key="+key+";value="+value);        }    }

11.Stack類:

//出棧進棧    public static void test(){        Stack stack=new Stack();        stack.add("apple");        stack.add("banana");        stack.add(123);        stack.add(new Date());                 Iterator it=stack.iterator();        while(it.hasNext()){            Object obj=it.next();            System.out.println(obj);        }        //peek方法是取值,不會改變棧的大小        Object peekObj=stack.peek();        System.out.println("peekObj:"+peekObj);        System.out.println("peek after:"+stack.size());        //pop方法將最後一個值彈出,棧的大小改變        Object popObj=stack.pop();        System.out.println("popObj:"+popObj);        System.out.println("pop after:"+stack.size());             }

12.統計輸入的語句中每個字元的個數:

public static void countChar(){        Scanner sc=new Scanner(System.in);        System.out.println("請輸入需統計的語句:");        String s=sc.next();        try {            //先用GBK將字元解碼,然後用UTF-8將字串加碼。            s = new String(s.getBytes("GBK"), "utf-8");            System.out.println(s);        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }        char[] c=s.toCharArray();        Map<Character,Integer> map=new TreeMap<Character,Integer>();        for (int i = 0; i < c.length; i++) {            if(!(map.containsKey(c[i]))){                map.put(c[i], 1);            }else{                map.put(c[i], map.get(c[i])+1);            }        }                 for(Object obj:map.entrySet()){            Entry entry=(Entry) obj;            Object key=entry.getKey();            Object value=entry.getValue();            System.out.println(key+"="+value);        }    }


本文出自 “ming” 部落格,請務必保留此出處http://8967938.blog.51cto.com/8957938/1676505

Java培訓-集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.