Java 類集框架(Set, List, Map)的使用

wangyunfei 9年前發布 | 5K 次閱讀 Java Java開發

雖然面試的要求是要知道HashMap是怎么實現的,令人望而卻步,但搞明白它怎么用,就成功了一小半。

什么是類集框架

  • 是一組類和接口

  • 位于java.util包中

  • 主要用于存儲和管理對象

  • 主要分為三大類--集合、列表和映射

    • 集合中的對象不按特定的方式排序,并且沒有重復對象。和數學中集合的概念類似。(如果添加了重復的對象,會怎樣呢?并不會報錯,但重復的元素只算一個)。

    • 列表中的對象按照索引位置排序,可以有重復對象。

    • 映射中的每一個元素包含一個鍵對象和一個值對象,即鍵值對。鍵不可以重復,值可以重復。

注意這些接口及其實現類的繼承關系:

Collection 和 Iterator接口

Set 接口和 List 接口都是 Collection 的子接口,因此我們先看看Collection 接口中有什么方法:

方法名 作用
boolean add(Object o) 向集合中加入一個對象
void clear() 刪除集合中的所有對象
boolean isEmpty() 判斷集合是否為空
remove(Object o) 從集合中刪除一個對象的引用
int size() 返回集合中元素的數目

Set有一個實現類,就是HashSet,它是Set中我們最常用的。下面我們舉一個例子,在HashSet中使用這些方法。

Set 和 HashSet的使用方法

//導包時少用*,寫明確一點,方便查錯和閱讀
import java.util.Set;
import java.util.HashSet;

public class Test {
    public static void main(String args []) {
        //把具體的實現類向上轉型為接口類型,方便接收參數,即:
        //HashSet<String> hashSet = new HashSet<String>();
        //Set<String> set = hashSet;
        Set<String> set = new HashSet<String>();
        set.add("a");
        set.add("b");
        set.add("c");
        set.add("d");
        System.out.println("Size: " + set.size());

        //重復添加元素,會怎樣呢? 
        set.add("c");
        System.out.println("Size with two c: " + set.size());

        set.remove("a");
        System.out.println("Size after remove: " + set.size());        

        set.clear();
        System.out.println("Size after clear: " + set.size());

        System.out.println("Is empty: " + set.isEmpty());        
    }
}

運行結果:

如何遍歷 Set

集合是無序的,所以不能像數組或者List那樣,根據下標輸出其中的元素,因此我們需要使用迭代器 Iterator。

由最前面的圖可以看出,它們之間的繼承關系是:Iterator <-- Collection <-- Set <-- HashSet.

Iterator 的常用方法有:

  • hasNext():判斷迭代器當中,還有沒有下一個元素
  • next():返回迭代器當中的下一個元素

遍歷Set的方法:

生成迭代器對象:Iterator it = set.iterator() ,這個迭代器對象可以把set中的元素都取出來。

iterator() 方法屬于 collection 接口,所以 collection 的子接口 set 中, 必然有 iterator() 方法。

import java.util.Iterator;
import java.util.Set;
import java.util.HashSet;

public class Test {
    public static void main(String args []) {
        Set<String> set = new HashSet<String>();        
        set.add("a");
        set.add("b");
        set.add("c");
        set.add("d");        
        Iterator<String> it = set.iterator();
        while(it.hasNext()) 
            System.out.println(it.next());        
    }
}

運行結果:

Map 和 HashMap的使用方法

由一開始的類圖可以看出,Map并沒有繼承Collection接口,是一個單獨的接口。

Map中的重要方法:

  • put(K key, V value): 把鍵值對放入Map
  • get(Object key): 返回當前鍵對應的值
  • 其他方法與Collection中類似,比如remove(), clear()

一個簡單的例子:

import java.util.Map;
import java.util.HashMap;

public class Test {
    public static void main(String args []) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("1", "a");
        map.put("2", "b");
        map.put("3", "c");
        map.put("4", "d");
        //如果有重復的鍵,后面的值會覆蓋前面的
        map.put("3", "e");

        System.out.println(map.size());
        System.out.println(map.get("3"));
    }
}

運行結果:

 

來自:http://www.jianshu.com/p/305c3ac8b17a

 

 本文由用戶 wangyunfei 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!