LinkedHashMap与Hashtable

 

LinkedHashMap集合

  我们知道HashMap保证成对元素唯一,并且查询速度很快,可是成对元素存放进去是没有顺序的,那么我们要保证有序,还要速度快这么办  

package Demo_Map;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;

/*
java.util.LinkedHashMap<K,V> entends HashMap<K,V>
Map 接口的哈希表和链接列表实现,具有可预的迭代顺序。
底层原理:
    哈希表+链表(记录元素的顺序)
 */
public class Demo01_Map {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();
        map.put("a","a");
        map.put("c","c");
        map.put("d","d");
        map.put("b","b");
        map.put("a","q");
        System.out.println(map);//  key不允许重复, 无序 {a=a, q=q, b=b, c=c, d=d}

        LinkedHashMap<String, String> hashMap = new LinkedHashMap<>();
        hashMap.put("a","a");
        hashMap.put("c","c");
        hashMap.put("d","d");
        hashMap.put("q","q");
        hashMap.put("a","v");
        System.out.println(hashMap);//  key不允许重复,有序 {a=a, c=c, d=d, q=q, v=v}
    }
}

Hashtable集合

 

 

 

 

 

 

 

 

package Demo_Map;

import java.util.HashMap;
import java.util.Hashtable;

/*
java.util.Hashtable<K,V>集合impLements Map<K,V>接口
HashtabLe:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢HashMap ;底层是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快HashMap集合(之前学的所有的集合):可以存储null值,nulL键
HashtabLe集合,不能存储nuLl值, nuLl键
Hashtable和vector集合一样,在jdk1.2版本之后被更先进的集合(HashAap ,ArrayList)取代了Hashtable的子类Properties依然活跃在历史舞台
Properties集合是一个唯—和Io流相结合的集合
 */
public class Demo02Hashtable {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();
        map.put(null,"a");
        map.put("b",null);
        map.put(null,null );
        System.out.println(map);//{null=null, b=null}

        Hashtable<String, String> hashtable = new Hashtable<>();
        hashtable.put(null,"a");//NullPointerException
        hashtable.put("b","a");//NullPointerException
        hashtable.put(null,null);//NullPointerException


    }
}

 

 

 

package Demo_Map;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;

/*
java.util.LinkedHashMap<K,V> entends HashMap<K,V>
Map 接口的哈希表和链接列表实现,具有可预的迭代顺序。
底层原理:
哈希表+链表(记录元素的顺序)
*/
public class Demo01_Map {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("a","a");
map.put("c","c");
map.put("d","d");
map.put("b","b");
map.put("a","q");
System.out.println(map);// key不允许重复, 无序 {a=a, q=q, b=b, c=c, d=d}

LinkedHashMap<String, String> hashMap = new LinkedHashMap<>();
hashMap.put("a","a");
hashMap.put("c","c");
hashMap.put("d","d");
hashMap.put("q","q");
hashMap.put("a","v");
System.out.println(hashMap);// key不允许重复,有序 {a=a, c=c, d=d, q=q, v=v}
}
}

------------恢复内容结束------------

posted @ 2022-07-07 09:22  zj勇敢飞,xx永相随  阅读(21)  评论(0编辑  收藏  举报