對映集map
阿新 • • 發佈:2018-12-10
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);
}
}
}