之前的Map操作中key值的内容不能重复,如果重复的话,后面的内容会把前面的内容覆盖掉。

程序范例:

import java.util.IdentityHashMap ;
import java.util.HashMap ;
import java.util.Set ;
import java.util.Iterator ;
import java.util.Map ;
class Person{
 private String name ;
 private int age ;
 public Person(String name,int age){
  this.name = name ;
  this.age = age ;
 }
 public boolean equals(Object obj){
  if(this==obj){
   return true ;
  }
  if(!(obj instanceof Person)){
   return false ;
  }
  Person p = (Person)obj ;
  if(this.name.equals(p.name)&&this.age==p.age){
   return true ;
  }else{
   return false ;
  }
 }
 public int hashCode(){
  return this.name.hashCode() * this.age ;
 }
 public String toString(){
  return "姓名:" + this.name + ",年龄:" + this.age ;
 }
};
public class IdentityHashMapDemo01{
 public static void main(String args[]){
  Map<Person,String> map = null ; // 声明Map对象
  map = new HashMap<Person,String>() ;
  map.put(new Person("张三",30),"zhangsan_1") ; // 加入内容
  map.put(new Person("张三",30),"zhangsan_2") ; // 加入内容
  map.put(new Person("李四",31),"lisi") ; // 加入内容
  Set<Map.Entry<Person,String>> allSet = null ; // 准备使用Set接收全部内容
  allSet = map.entrySet() ;
  Iterator<Map.Entry<Person,String>> iter = null ;
  iter = allSet.iterator() ;
  while(iter.hasNext()){
   Map.Entry<Person,String> me = iter.next() ;
   System.out.println(me.getKey() + " --> " + me.getValue()) ;
  }
 }
};

程序运行结果:

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

姓名:张三;年龄:30-->zhangsan_2  //根据程序运行结果可以发现,重复的key的内容将前面第一个key的内容给覆盖了

只要地址不相等(key1!=key2),就可以利用IdentityHashMap来实现将不重复地址的key,但是内容是一样的key添加到集合中去。

对象内容一样但是地址不同,这是由于在实例化的过程中都是用new这个关键字(每次使用new这个关键字,vm都会给其分配一个内存空间),所以可以实现地址不同但是内容一样

转载于:https://www.cnblogs.com/6502ck/p/3385404.html

key可以重复的map集合:IdentityHashMap相关推荐

  1. Java中key可以重复的Map集合:IdentityHashMap

    范例:Map中的key不允许重复,重复就是覆盖 [java] view plaincopy package org.lxh.demo13.mapdemo; import java.util.HashM ...

  2. java map 允许重复_java中key值可以重复的map:IdentityHashMap

    在Java中,有一种key值可以重复的map,就是IdentityHashMap.在IdentityHashMap中,判断两个键值k1和 k2相等的条件是 k1 == k2 .在正常的Map 实现(如 ...

  3. 【Groovy】map 集合 ( 根据 Key 获取 map 集合中对应的值 | map.Key 方式 | map.‘Key’ 方式 | map[‘Key’] 方式 | 代码示例 )

    文章目录 一.根据 Key 获取 map 集合中对应的值 1.通过 map.Key 方式获取 map 集合中的值 Value 2.通过 map.'Key' 方式获取 map 集合中的值 Value 3 ...

  4. 8.Map集合(HashMapTreeMap)

    一.Map集合概述和使用 1.Map集合概述 Interface Map<K,V> K:键的类型 V:值的类型 将键映射到值的对象:不能包含重复的键:每个键可以映射到最多一个值 创建Map ...

  5. 【Flutter】Dart 数据类型 Map 类型 ( 创建 Map 集合 | 初始化 Map 集合 | 遍历 Map 集合 )

    文章目录 一. Dart 数据类型 Map 类型 二. Map 类型初始化并赋值 1. 创建 Map 对象同时进行初始化操作 2. 先创建 Map 对象再进行赋值 三. Map 集合遍历 1. 使用 ...

  6. 1.5 Map集合:HashMap 和TreeMap 类

    Map集合,HashMap,TreeMap Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键(key)对象和一个值(value)对象.用于保存具有映射关系的数据 ...

  7. java 中map_Java Map集合详解

    Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象.其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素 ...

  8. 进阶 09 Map集合

    Map集合 java.util.Map<k,v>集合 Map集合的特点: 1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)2.Map集合中的元素,key和va ...

  9. Java进阶(七)Set系列集合、Map集合体系

    七.Set系列集合.Map集合体系 需要学会什么? Set系列集合的特点:Set系列集合的特点和底层原理. 集合工具类Collections:快速的对集合进行元素的添加.排序等操作. 综合案例:把Co ...

最新文章

  1. Appium入门实例(Java)
  2. 借助Redis完成延时任务
  3. java自定义分页标签_自定义分页标签--仿javaeye分页效果
  4. java 作业调度_Java使用quartz实现作业调度
  5. 【数据库】E-R图向关系模型转换的规则
  6. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(8月5日-8月12日)
  7. zabbix   数据采集方法
  8. WPF的DataGrid的某个列绑定数据的三种方法(Binding、Converter、DataTrigger)
  9. Apache Jackrabbit Oak 1.12.0 发布,可扩展、高性能分层存储库
  10. OrCAD导出BOM表的方法
  11. 如何使用VSCode开发Qt项目?
  12. c语言成绩管理程序设计,成绩管理程序设计报告(含代码C语言
  13. Qt读取/写入Excel数据--QAxObject
  14. hdmi怎么支持2k分辨率_安卓机皇发布!全系支持2K分辨率+120Hz刷新率
  15. NAACL 2022 | FACTPEGASUS:抽象摘要的真实性感知预训练和微调
  16. Tolua使用笔记三:Tolua协程用法
  17. Oracle动态视图v$sql的说明和使用
  18. 中职组网络安全C模块全漏洞脚本讲解包含4个漏洞的脚本
  19. uniapp在安卓端实现hanziWriter
  20. 一套键盘鼠标跨电脑切换使用

热门文章

  1. macbook下载苹果版Photoshop cc2019 for mac
  2. jQuery 选择器汇总-思维导图-选择器
  3. mybatisplus 操作另一个数据库的数据_c#连接sql数据库以及操作数据库
  4. toybox执行linux程序,VirtualBox 的命令行用法
  5. ajax mysql点赞_ajax 实现点赞功能
  6. 基坑计算理论m法弹性支点法_基坑支护结构设计应注意的一些问题
  7. Php数组面包屑导航,PHP 导航提示(面包屑型轨迹)
  8. java i数据类型_数据类型 I
  9. java监控队列_java-Spring Rabbit监听输出队列或接收
  10. git常用命令之stash