1. 程式人生 > >對映集map

對映集map

Java中使用Map介面描述對映結構,對映Map是一個獨立的介面,描述的是鍵key-值value的對應關係,Map不允許鍵重複,並且每個鍵只能對應一個值。

這裡寫圖片描述

Hashmap雜湊圖

HashMap通過hash演算法排布儲存Map中的鍵(key),HashMap也是最常用的圖狀資料結構,其儲存的資料元素是成對出現的,也就是說每一個鍵(key)對應一個值(value)。

HashMap中的資料元素不是按照我們新增的順序排布的,並且其記憶體模式也不是連續的,但是其key值的排布是根據Hash演算法獲得的,所以在資料元素的檢索方面速度還是較快的。

HashMap不能直接裝入迭代器,必須將HashMap的所有鍵key裝入迭代器,再進行遍歷,或者是使用Entry類,將所有資料元素轉化為Entry的集合進行處理。

HashMap不允許出現重複的鍵(key),並且每個鍵(key)只能對應一個值(value)。

Treeset樹狀對映集

TreeMap是一種有序的對映關係,即每對鍵key-值value在TreeMap中是有序排列的,並且這個序列遵循自然序列,當我們向TreeMap插入新的資料元素時,TreeMap可能會重新排序,所以

TreeMap中的任何元素在整個對映組中是不固定的。 當我們的TreeMap鍵(key)是自定義類時,需要在自定義類中重寫compareTo方法,以提供比對形式,否在TreeMap不能對使用者自定義的型別的鍵(key)進行正確的樹狀排序,也就不能對整個鍵值對起到有效的排序效果。

public class MapTest {


    public static void main(String[] args) {
        Map map = new HashMap();
        map.put("001", new Student("001"));
        map.put("002", new Student("002"));
        map.put("003", new Student("003"));
        map.put("004", new Student("004"));
        map.put("001", new Student("005"
)); Map stuMap = new HashMap(); Student stu008 = new Student("008"); stuMap.put("007", new Student("007")); stuMap.put("008", stu008); stuMap.put("009", new Student("009")); stuMap.clear(); map.remove("002"); map.putAll(stuMap); //通過key獲取對應的value值 System.out.println("----------->" + map.get("002")); //檢查map中是否有某一個元素:相當於檢索 System.out.println("----------->" + map.containsKey("008")); //檢查map中是否有某一個value:相當於檢索 System.out.println("----------->" + map.containsValue(stu008)); //Node<key, Value> 第一種遍歷的方式:entrySet獲取map中所有的節點 Set set = map.entrySet(); for(Object o: set) { Entry enty = (Entry) o; System.out.println(enty.getKey() + "------------------->" + enty.getValue()); } System.out.println("========================================"); //獲取map中所有的key值,第二種遍歷方式 Set keySet = map.keySet(); for(Object o : keySet) { System.out.println(o + "------------------->" + map.get(o)); } //第三種遍歷方式:map.values()獲取所有的value值 Collection values = map.values(); for(Object o : values) { System.out.println("**************************>" + o); } } }