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));
}
}
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));
}
}
发表评论
-
nexus私服启动报错,错误1067: 进程意外终止。
2019-12-10 18:55 557nexus私服启动报错,错误提示,1067: 进程意外终止。 ... -
最新JAVA调用新浪微博API之发微博、发图片
2018-08-29 17:12 2189前言: 微博官方在2017年3月份调整了相关接口,取消了网 ... -
java使用POI操作Word文档,写入文字与图片
2018-08-10 10:49 3379第一步,继承XWPFDocument,写一个操作图片写入大小 ... -
java从字符串中提取数字的简单实例
2018-08-08 15:55 4767package excel; import java. ... -
Quartz开源的作业调度框架
2016-11-29 15:49 809package com.demo.web.quartz; ... -
HttpClient MultipartRequestEntity文件上传,中文乱码解决方案
2015-05-13 20:38 11213之前分享过HttpClient模拟登录第三方项目的代码,这次 ... -
Sftp访问方式JSch
2015-05-12 14:56 2042使用JSch访问Sftp有时候 ... -
Struts2的工作原理
2014-07-12 15:38 489一个请求在Struts2框架中的处理大概分为以下几个步 ... -
HttpClient模拟登陆
2014-04-21 15:15 463public static void testPost(in ... -
FileInputStream和FileOutputStream、DataInputStream和DataOutputStream、FileReader和Fil
2014-04-11 09:33 1742package cn.zzu.lxzqz; impo ... -
java实现文件解压缩,ZipInputStream,ZipOutputStream
2014-03-20 17:29 2857package compress; import j ... -
修改类不重启tomcat 自动加载项目
2013-12-09 16:23 622目前我所知道的的方式有两种: 一、在项目project\W ... -
数据导出Excel表、数据库数据导出
2013-09-10 11:41 752public static HashMap<Strin ... -
导出数据库设计结构为Excel表格,数据库字段操作
2013-05-10 14:40 1386第一步: package DB; import java.u ... -
Object Clone
2013-04-25 11:53 592package test; public class Clas ... -
小品StringTokenizer
2013-04-07 17:51 842package com.excel.test; import ... -
JSONObject操作
2013-03-22 10:35 6250package com.json; import java. ... -
JAVA操作Excel表
2013-03-13 14:15 1413package com.excel.test; import ... -
Hibernate操作Blob,将Blob转换为String
2013-01-15 10:39 2287public String getScenicCoord(St ... -
FTPListParseException
2012-12-24 14:33 2310使用ftp4这个jar包来连接FTP时,有时会报it.saur ...
相关推荐
Map接口的实现类有Hashtable、HashMap、LinkedHashMap、WeakHashMap和IdentityHashMap。Hashtable与HashMap类似,但它是线程安全的,不接受null键值。HashMap是非同步的,允许null键和null值。LinkedHashMap保持了...
本文总结了Java中级面试题,涵盖了集合、HashMap、HashSet、HashTable、ConcurrentHashMap、红黑树、Java 8对HashMap的优化、LinkedHashMap、TreeMap、IdentityHashMap等知识点。 集合 * List和Set都是继承自...
在Java的集合框架中,哈希表是一种常用的数据结构,主要体现在`HashMap`和`HashTable`等实现类中。这两个类都是用来存储键值对的数据结构,但是它们之间存在一些重要的区别。 首先,`HashTable`是线程安全的,这...
5. HashMap 和 Hashtable: - HashMap 非线程安全,允许 null 键和值,效率较高,适合单线程环境。 - Hashtable 是线程安全的,不允许 null 键和值,效率较低,但在多线程环境下更可靠。 6. Iterator 和 ...
IdentityHashMap与HashMap类似,但其比较键时使用的是Object的`==`操作,而不是`equals()`方法,这意味着它基于对象的内存地址而非内容进行比较。 Stack是一个特殊的List,它是Vector的子类,实现了后进先出(LIFO...
HashMap (done) Hashtable (done) Properties (done) LinkedHashMap (done) IdentityHashMap (done) TreeMap (done) WeakHashMap (done) 并发集合 ArrayBlockingQueue(done) LinkedBlockingDeque (done) ...
Hashtable 类IdentityHashMap 类WeakHashMap 类 Collections 类集合实现类特征图 泛形 泛型的使用 用泛型表示类 用泛型表示接口泛型方法 泛型通配符 反射 Class 类Field 类Method 类ClassLoader 类 枚举 枚举特性 ...
`HashMap`、`Hashtable`、`TreeMap`、`WeakHashMap`和`IdentityHashMap`是它的常见实现。 - `HashMap`是非线程安全的,而`Hashtable`是线程安全的。`TreeMap`按照键的自然顺序或自定义`Comparator`排序。 - `...
`HashTable`是线程安全的`Map`实现,但不推荐在现代Java中使用,因为它性能较差且不支持`null`值。 在选择集合实现时,需要考虑以下几个因素: 1. 是否需要保持元素的插入顺序或排序。 2. 是否允许重复元素。 3. ...
Map接口的实现如HashMap、TreeMap、LinkedHashMap和Hashtable提供了键值对的存储,其中HashMap和TreeMap分别基于哈希表和红黑树实现,LinkedHashMap保持插入顺序或访问顺序,而Hashtable是线程安全的。WeakHashMap和...
如ArrayList、Vector、LinkedList、Stack、HashSet、TreeSet、LinkedHashSet、PriorityQueue、HashMap、TreeMap、LinkedHashMap、Hashtable、IdentityHashMap、WeakHashMap。Collections类提供了一些通用的集合操作...
Java的集合框架包括List(如ArrayList、LinkedList和Vector)、Set(如HashSet、TreeSet、LinkedHashSet和PriorityQueue)、Map(如HashMap、TreeMap、LinkedHashMap、Hashtable、IdentityHashMap、WeakHashMap)...
如ArrayList、Vector(线程安全的动态数组)、LinkedList(双向链表)、Stack(栈)、HashSet、TreeSet、LinkedHashSet(不同类型的无序不...Hashtable(线程安全的HashMap替代品)、IdentityHashMap、WeakHashMap等...
- **历史背景**:介绍 JDK 早期版本中的集合类,如 `Vector`、`Hashtable` 等,以及它们与现代集合框架的关系。 #### 六、算法支持 - **排序与搜索**:讨论如何使用 Java 集合框架中的方法进行排序和搜索操作。 -...
HashMap、TreeMap、LinkedHashMap、Hashtable等是Java中的映射类,用于存储键值对。WeakHashMap和IdentityHashMap是特殊类型的映射,它们具有不同的键引用策略。Collections类提供了一系列操作集合的静态方法,如...
HashMap、TreeMap、LinkedHashMap、Hashtable、IdentityHashMap、WeakHashMap是不同的映射结构,它们用于存储键值对。Collections类提供了集合操作的静态方法,如排序、查找、转换等。 Java还支持泛型,用于在编译...
- `Hashtable`:线程安全的HashMap。 - `IdentityHashMap`:使用对象本身作为哈希码。 - `WeakHashMap`:使用弱引用作为键值对。 #### 工具类 - `Collections`:提供了对集合操作的各种静态方法。 ### 六、输入...
- **IdentityHashMap类**:使用系统身份哈希码确定相等性。 - **WeakHashMap类**:使用弱引用作为键的`Map`。 - **Collections类**:提供了一些静态方法来操作集合。 - **集合实现类特征图**:展示了不同集合实现...
6. **集合框架**:Java 提供了丰富的集合类,如ArrayList、Vector、LinkedList、Stack、HashSet、TreeSet、LinkedHashSet、PriorityQueue、HashMap、TreeMap、LinkedHashMap、Hashtable、IdentityHashMap、...
- **Hashtable**: 同样基于哈希表实现,但它是线程安全的。 - **特点**:不允许键或值为null。 - **实现方法**:`put(K key, V value)`, `get(Object key)`, `remove(Object key)`等。 - **LinkedHashMap**: 维护...