JAVA 集合類2-MAP介面與迭代器

來源:互聯網
上載者:User

標籤:one   map介面   操作   ext   .sh   位置   增強   print   ISE   

一.泛型(Generic)

由於放入集合中的元素預設都是Object類型,無法看出其本身自有的類型,當對這些元素進行操作時需要轉型才可用,這樣效率低還易出錯,在JDK1.5版本後引入泛型,規定了此集合中的元素類型,增強了程式的可讀性和穩定性。

格式:用<>表示,定義的類型必須是參考型別。後面的<>可以省略。

List<Book> list1 = new ArrayList<Book>();

 二.Map介面的常用方法

Map介面提供了將鍵映射到值的對象。一個映射不能包含重複的鍵,每個鍵最多隻能映射到一個值,Map中的元素是通過鍵(key)值(value)對的形式進行儲存的。

Map介面也有兩個子類實作類別HashMap(雜湊表做索引)和TreeMap(二叉樹做索引)。

HashMap常用方法:

public class Test{        public static void main(String[] args) {        Map<Object,Object> map1 = new HashMap<Object,Object>();   //建立HashMap類集合;        map1.put(Object key, Object value);  //向集合中添加指定的key與value的映射關係;其傳回值是是替換出來的value;        map1.get(Object key);  //擷取指定鍵所對應的值;         map1.remove(Object key);  //刪除指定鍵所對應的值;傳回值為該值;        map1.remove(Object key,Object value);  //刪除指定鍵及其所對應的值;如刪除成功返回true,否則返回false;        map1.containsKey(Object key);  //判斷是否包含某個鍵,有返回true,沒有返回false;        map1.containsValue(Object value);  //判斷是否包含某個值,有返回true,沒有返回false;        map1.size();  //擷取該集合中有幾對映射;        map1.isEmpty();  //判斷該集合中是否有元素;        map1.putAll(Map m);  //將另一個集合中的元素放入該集合;        map1.clear();  //清除該集合中所有元素;        map1.keySet();  //擷取該集合中所有鍵組成的Set集合;        map1.values();  //擷取該集合中所有值對象組成的Collection集合;        //擷取map集合中的索引值對也可通過遍曆方法得到,由於Set類集合沒有順序,需要調用list中的構造方法        Set<Object> set1 = map1.keySet();         List<Object> list1 = new ArrayList(set1);        for (int i = 0; i < list1.size(); i++) {            Object o1 = list1.get(i);            Object o2 = map1.get(o1);        }    }}

 三.迭代器

為了能夠遍曆所有集合類型中的元素,優先使用Iterator介面建立迭代器,Iterator介面是所有集合的父類。

Iterator介面中只有3個方法:

1.hashNext():如果仍有元素可以迭代,返回true;

2.next():返回迭代的下一個元素;

3.remove():從迭代器指向的collection中移除迭代器返回的最後一個元素;

注意:迭代器中的remove方法, 絕對不可以與list中的remove(Object)方法混用,會拋出ConcurrentModificationException這個異常。

舉例說明:

public class Test{        public static void main(String[] args) {        List<String> list = new ArrayList();        list.add("qqqq");        list.add("wwww");        list.add("eeee");        Iterator<String> iter = list.iterator();        while(iter.hasNext()) {            String s = iter.next();            System.out.println(s);            if (s.equals("wwww")) {                 iter.remove();                        }        }        System.out.println(list);            }}

輸出結果為:

qqqqwwwweeee[qqqq, eeee]

四.Collections類

public class Test{        public static void main(String[] args) {        List<Integer> list1 = new ArrayList<Integer>();        List<Integer> list2 = new ArrayList<Integer>();        Collections.sort(list1);//預設從小到大排序;        Collections.shuffle(list1);//隨機排序;         Collections.reverse(list1);//從大到小排序;         Collections.copy(list1, list2);//將list2中的元素複製到list1中,前提是list1中的元素個數不得大於list2中的元素個數;         Collections.fill(list1, Integer);//將list1中的所有元素填充為同一類型的相同元素;         Collections.sort(list1);//對list1中的所有元素進行排序;         Collections.binarySearch(list1, key);//二分尋找法,尋找list1中的key元素位置,需要先對元素進行排序;    }}

 

JAVA 集合類2-MAP介面與迭代器

聯繫我們

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