1.HashMap键值不允许重复,重复会覆盖之前的键值对,显示的是最后的键值对。
2.HashSet存放的是某种类型的数据,如果数据重复,就不会往集合里添加数据,显示的是之前的数据。
3.map,set都是无序的,LinkedHashMap跟LinkedHashSet是有序的4.HashMap操作时key是不能重复的,如果重复则肯定会覆盖之前的内容。

public class  ExampleUnitTest {private boolean playflag=false;String key="status";private Set<string> hashset=new HashSet();private LinkedHashMap<string, integer=""> map = new LinkedHashMap<>();private String letters[] = { "a", "b", "c", "d", "e","b" };@Beforepublic void init() {System.out.println(letters.length);for (int i = 0; i < letters.length; i++) {
map.put(letters[i], i + 1);
if(!hashset.add(letters[i]))System.out.println("repeat"+i);}for (String s : map.keySet()) {
System.out.println("key= " + s + "  and  value= " + map.get(s));}for(Integer string :map.values()){
System.out.println("value is "+string);}System.out.println("---unsortmap-----");Map<string, integer=""> m = new HashMap<>();for (int i = 0; i < 10; i++) {
m.put("key" + i, i);}System.out.println(m);//{key=value}的形式 map是无序!}@Testpublic void testGetHead() {assertEquals(getHead(map).getKey(), "a");assertEquals(getHead(map).getValue(), Integer.valueOf(1));}@Testpublic void testGetTail() {System.out.println(map.size());System.out.println(hashset.size());assertEquals(getTail(map).getKey(), "e");assertEquals(getTail(map).getValue(), Integer.valueOf(5));}@Testpublic void testGetTailByReflection() throws NoSuchFieldException, IllegalAccessException {assertEquals(getTailByReflection(map).getKey(), "e");assertEquals(getTailByReflection(map).getValue(), Integer.valueOf(5));}public <k, v=""> Map.Entry<k, v=""> getHead(LinkedHashMap<k, v=""> map) {return map.entrySet().iterator().next();}public <k, v=""> Map.Entry<k, v=""> getTail(LinkedHashMap<k, v=""> map) {Iterator<map.entry<k, v="">> iterator = map.entrySet().iterator();Map.Entry<k, v=""> tail = null;while (iterator.hasNext()) {
tail = iterator.next();}return tail;}@SuppressWarnings("unchecked")public <k, v=""> Map.Entry<k, v=""> getTailByReflection(LinkedHashMap<k, v=""> map)
throws NoSuchFieldException, IllegalAccessException {Field tail = map.getClass().getDeclaredField("tail");tail.setAccessible(true);return (Map.Entry<k, v="">) tail.get(map);}}

使用IdentityHashMap,key允许重复,只要两个对象的地址不相等即可

HashMap比较的是equals,IdentitiHashMap比较的是对象地址(是引用而不是值)

map = new HashMap(); // 实例化Map对象

map.put(new Person(“张三”, 30), “zhangsan_1”); // 增加内容

map.put(new Person(“张三”, 30), “zhangsan_2”); // 增加内容,key重复

map.put(new Person(“李四”, 31), “lisi”);

Output:

姓名:李四;年龄:31 –> lisi

姓名:张三;年龄:30 –> zhangsan_2

map = new IdentityHashMap(); // 实例化Map对象

map.put(new Person(“张三”, 30), “zhangsan_1”); // 增加内容

map.put(new Person(“张三”, 30), “zhangsan_2”); // 增加内容,key重复

map.put(new Person(“李四”, 31), “lisi”); // 增加内容

Output:

姓名:张三;年龄:30 –> zhangsan_2

姓名:张三;年龄:30 –> zhangsan_1

姓名:李四;年龄:31 –> lisi

HashMap,LinkedHashMap,IdentityHashMap,HashSet之间的异同相关推荐

  1. HashMap,HashTable,TreeMap,HashSet,TreeSet

    注意:最好先看一下(三)中 树红黑树的数据结构分析,可以的话数组,链表的数据结构也先复习一下,这里默认你懂数组,链表 2.2 map Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对 ...

  2. Java中的Map集合及其子类HashMap,LinkedHashMap,TreeMap,ConcurrentHashMap

    一 .Map public interface Map<K,V> 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口哦取代了Dictionary类,后者完全是 ...

  3. java中HashMap,LinkedHashMap,TreeMap,HashTable的区别

    java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根 ...

  4. Hashtable TreeMap HashMap LinkedHashMap的区别

    Hashtable TreeMap HashMap LinkedHashMap的区别 Hashtable TreeMap HashMap LinkedHashMap详解 Hashtable 1.内部存 ...

  5. HashMap, LinkedHashMap 和 TreeMap的区别

    HashMap, LinkedHashMap 和 TreeMap的区别 Java里面的HashMap, LinkedHashMap 和 TreeMap 有什么区别?我看不出以下3个key和value有 ...

  6. 集合之比较接口器+Map家族的HashMap+LinkedHashMap+Hashtable+ConcurrentHashMap

    集合之比较接口器+Map家族的HashMap+LinkedHashMap+Hashtable+ConcurrentHashMap 一.比较器接口 1.内置比较器 – Comparable import ...

  7. Windows 2003和XP之间的异同

    Windows 2003和XP之间的异同 收集整理了一下,给一些朋友解说server2003系统的设置.关于用server操作系统,由于不了解,对稳定性,兼容性,驱动或多或少有些疑虑,Win2003是 ...

  8. 如何区别API、REST API、RESTful API和Web Service之间的异同

    当你看到API接口你会想起什么?是接口.第三方调用.还是API文档?初看你可能会觉得这太熟悉了,这不是系统开发日常系列吗?但你仔细想一想,你会发现API的概念在你脑海里是如此的模糊.如何你通过搜索引擎 ...

  9. 绿米开关如何重置_三种墙壁开关:绿米、调光、凌动/米家之间的异同

    三种墙壁开关:绿米.调光.凌动/米家之间的异同 2020-06-18 18:17:17 9点赞 28收藏 6评论 三种墙壁开关:绿米.调光.凌动/米家之间的异同 详细讲解绿米Aqara智能墙壁开关.Y ...

  10. 集合{LinkedHashMap TreeMap HashSet LinkedHashSet TreeSet 快速失败机制 ConcurrentHashMap CAS 多线程协同扩容}(二)

    目录标题 LinkedHashMap Map集合框架结构体系图 什么是LinkedHashMap Linked 链式 的意思 HashMap "哈希映射"的意思 LinkedHas ...

最新文章

  1. android enum 内存,Android 中的 Enum 到底占多少内存?该如何用?
  2. [Noi2014]随机数生成器
  3. oracle表是动态表怎么算排名,Oracle学习动态性能表
  4. 7张图讲透Java垃圾回收算法!学妹直呼666!!!
  5. Bootstrap 图片的形状
  6. 【Scala】Scala Java Error: value filter is not a member of *
  7. model.train()和model.eval()
  8. 《流畅的Python》读书笔记——Python文本和字节序列
  9. linux hal 结构图
  10. dockerfile入门
  11. .Net程序逆向入门教程
  12. 2021年美赛资料准备
  13. 为知笔记 | 3 分钟创建格式美美的笔记
  14. 您似乎与家庭管理员不在同一个国家/地区,油管换区过程记录
  15. 就是美女,怎么了!!!
  16. 请问哪些好用文字转语音软件?
  17. 华硕笔记本开机自动进入bios,进不了windows系统的解决方法
  18. webRTC(十二):webrtc 传输速率控制
  19. NIC(Network Interface Controller,网络接口控制器)
  20. 没信号是不是就无服务器,不要没网就说wifi断流,你知道什么是断流吗?

热门文章

  1. Java中数据输入输出流——DataInputStream和DataOutputStream
  2. VBS脚本运行库 ——文本文件的建立、追加、删除等
  3. 领扣(LeetCode)七进制数 个人题解
  4. verilog求倒数-ROM实现方法
  5. ASP.NET WebApi 图片上传
  6. [.Net] 一句话Linq(递归查询)
  7. JAVA 最新 环境搭建(JDK 1.8 + Tomcat 9 + eclipse oxygen + mysql 5.7)
  8. Linux 进程管理 (ZZ)
  9. FFT海水模拟(又来了-_-b)
  10. 让手机重现“一律允许使用这台计算机进行调试”确认窗口