`

IdentityHashMap,HashMap,Hashtable

    博客分类:
  • JAVA
阅读更多
package test;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.IdentityHashMap;
import java.util.Map;

public class MapTest {
public static void main(String[] args) {
//在 IdentityHashMap中,当且仅当(k1==k2)时,才认为两个键k1和k2相等
//此类设计仅用于其中需要引用相等性语义的罕见情况
Map<String, String> map = new IdentityHashMap<String, String>();
String str1 = new String("zhang");
String str2 = "zhang";
String str3 = new String("zhang");
map.put(str1, "1");
map.put(str2, "2");
map.put(str1, "3");
map.put(null, "4");
map.put(str3, null);
System.out.println("null:" + map.get(null));
System.out.println("map:" + map);
System.out.println("----------------------------");

//除了非同步和允许使用null之外,HashMap 类与Hashtable 大致相同
//HashMap,当且仅当满足下列条件时才认为两个键 k1 和 k2 相等:(k1==null ? k2==null : e1.equals(e2))
//也许你会想到这个疑问
//String s1 = null;
//String s2 = null;
//System.out.println(s1.equals(s2));以这样的方式直接判断两个字符串相等,而不需要(k1==null ? k2==null : e1.equals(e2))这么复杂,你可以试试
Map<String, String> map2 = new HashMap<String, String>();
map2.put(null, null);
map2.put(str1, "1");
map2.put(str2, "2");
map2.put(str3, "3");
System.out.println("map2:" + map2);
System.out.println(map2.get(null));
System.out.println("-----------------------------");

//HashTable实现了同步,且不允许使用null
Map<String, String> map3 = new Hashtable<String, String>();
//这样会报空指针错误
//map3.put(null, null);
//map3.put(null, "1");
//map3.put("2", null);
System.out.println(map3);
//这样会报空指针错误
//System.out.println(map3.get(null));
}
}
分享到:
评论

相关推荐

    java中集合的用法与区别.docx

    Map接口的实现类有Hashtable、HashMap、LinkedHashMap、WeakHashMap和IdentityHashMap。Hashtable与HashMap类似,但它是线程安全的,不接受null键值。HashMap是非同步的,允许null键和null值。LinkedHashMap保持了...

    java中级面试题(自己汇总)

    本文总结了Java中级面试题,涵盖了集合、HashMap、HashSet、HashTable、ConcurrentHashMap、红黑树、Java 8对HashMap的优化、LinkedHashMap、TreeMap、IdentityHashMap等知识点。 集合 * List和Set都是继承自...

    2019阿里内推面经1

    在Java的集合框架中,哈希表是一种常用的数据结构,主要体现在`HashMap`和`HashTable`等实现类中。这两个类都是用来存储键值对的数据结构,但是它们之间存在一些重要的区别。 首先,`HashTable`是线程安全的,这...

    Java 集合框架高难度进阶版面试题集锦解析

    5. HashMap 和 Hashtable: - HashMap 非线程安全,允许 null 键和值,效率较高,适合单线程环境。 - Hashtable 是线程安全的,不允许 null 键和值,效率较低,但在多线程环境下更可靠。 6. Iterator 和 ...

    map,list,set,stack,queue,vector等区别和特点1

    IdentityHashMap与HashMap类似,但其比较键时使用的是Object的`==`操作,而不是`equals()`方法,这意味着它基于对象的内存地址而非内容进行比较。 Stack是一个特殊的List,它是Vector的子类,实现了后进先出(LIFO...

    javabitset源码-JerrySoundCode:杰瑞声码

    HashMap (done) Hashtable (done) Properties (done) LinkedHashMap (done) IdentityHashMap (done) TreeMap (done) WeakHashMap (done) 并发集合 ArrayBlockingQueue(done) LinkedBlockingDeque (done) ...

    Java 基础核心总结 +经典算法大全.rar

    Hashtable 类IdentityHashMap 类WeakHashMap 类 Collections 类集合实现类特征图 泛形 泛型的使用 用泛型表示类 用泛型表示接口泛型方法 泛型通配符 反射 Class 类Field 类Method 类ClassLoader 类 枚举 枚举特性 ...

    Java期末复习-类集框架

    `HashMap`、`Hashtable`、`TreeMap`、`WeakHashMap`和`IdentityHashMap`是它的常见实现。 - `HashMap`是非线程安全的,而`Hashtable`是线程安全的。`TreeMap`按照键的自然顺序或自定义`Comparator`排序。 - `...

    Java集合框架

    `HashTable`是线程安全的`Map`实现,但不推荐在现代Java中使用,因为它性能较差且不支持`null`值。 在选择集合实现时,需要考虑以下几个因素: 1. 是否需要保持元素的插入顺序或排序。 2. 是否允许重复元素。 3. ...

    Java 基础核心总结.pdf

    Map接口的实现如HashMap、TreeMap、LinkedHashMap和Hashtable提供了键值对的存储,其中HashMap和TreeMap分别基于哈希表和红黑树实现,LinkedHashMap保持插入顺序或访问顺序,而Hashtable是线程安全的。WeakHashMap和...

    Java 软件开发复习提纲.pdf

    如ArrayList、Vector、LinkedList、Stack、HashSet、TreeSet、LinkedHashSet、PriorityQueue、HashMap、TreeMap、LinkedHashMap、Hashtable、IdentityHashMap、WeakHashMap。Collections类提供了一些通用的集合操作...

    Java基础核心总结.PDF

    Java的集合框架包括List(如ArrayList、LinkedList和Vector)、Set(如HashSet、TreeSet、LinkedHashSet和PriorityQueue)、Map(如HashMap、TreeMap、LinkedHashMap、Hashtable、IdentityHashMap、WeakHashMap)...

    Java基础总结(程序员cxuan编写)1

    如ArrayList、Vector(线程安全的动态数组)、LinkedList(双向链表)、Stack(栈)、HashSet、TreeSet、LinkedHashSet(不同类型的无序不...Hashtable(线程安全的HashMap替代品)、IdentityHashMap、WeakHashMap等...

    Java Collections Framework

    - **历史背景**:介绍 JDK 早期版本中的集合类,如 `Vector`、`Hashtable` 等,以及它们与现代集合框架的关系。 #### 六、算法支持 - **排序与搜索**:讨论如何使用 Java 集合框架中的方法进行排序和搜索操作。 -...

    Java基础核心总结.pdf

    HashMap、TreeMap、LinkedHashMap、Hashtable等是Java中的映射类,用于存储键值对。WeakHashMap和IdentityHashMap是特殊类型的映射,它们具有不同的键引用策略。Collections类提供了一系列操作集合的静态方法,如...

    Java基础核心知识点总结(79页).pdf

    HashMap、TreeMap、LinkedHashMap、Hashtable、IdentityHashMap、WeakHashMap是不同的映射结构,它们用于存储键值对。Collections类提供了集合操作的静态方法,如排序、查找、转换等。 Java还支持泛型,用于在编译...

    Java 基础核心总结,初级程序员必备,面试必考

    - `Hashtable`:线程安全的HashMap。 - `IdentityHashMap`:使用对象本身作为哈希码。 - `WeakHashMap`:使用弱引用作为键值对。 #### 工具类 - `Collections`:提供了对集合操作的各种静态方法。 ### 六、输入...

    Java 基础核心总结.md

    - **IdentityHashMap类**:使用系统身份哈希码确定相等性。 - **WeakHashMap类**:使用弱引用作为键的`Map`。 - **Collections类**:提供了一些静态方法来操作集合。 - **集合实现类特征图**:展示了不同集合实现...

    Java 基础核心总结-.pdf

    6. **集合框架**:Java 提供了丰富的集合类,如ArrayList、Vector、LinkedList、Stack、HashSet、TreeSet、LinkedHashSet、PriorityQueue、HashMap、TreeMap、LinkedHashMap、Hashtable、IdentityHashMap、...

    java.util包源码pdf版

    - **Hashtable**: 同样基于哈希表实现,但它是线程安全的。 - **特点**:不允许键或值为null。 - **实现方法**:`put(K key, V value)`, `get(Object key)`, `remove(Object key)`等。 - **LinkedHashMap**: 维护...

Global site tag (gtag.js) - Google Analytics