key可以重复的map集合:IdentityHashMap
之前的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相关推荐
- Java中key可以重复的Map集合:IdentityHashMap
范例:Map中的key不允许重复,重复就是覆盖 [java] view plaincopy package org.lxh.demo13.mapdemo; import java.util.HashM ...
- java map 允许重复_java中key值可以重复的map:IdentityHashMap
在Java中,有一种key值可以重复的map,就是IdentityHashMap.在IdentityHashMap中,判断两个键值k1和 k2相等的条件是 k1 == k2 .在正常的Map 实现(如 ...
- 【Groovy】map 集合 ( 根据 Key 获取 map 集合中对应的值 | map.Key 方式 | map.‘Key’ 方式 | map[‘Key’] 方式 | 代码示例 )
文章目录 一.根据 Key 获取 map 集合中对应的值 1.通过 map.Key 方式获取 map 集合中的值 Value 2.通过 map.'Key' 方式获取 map 集合中的值 Value 3 ...
- 8.Map集合(HashMapTreeMap)
一.Map集合概述和使用 1.Map集合概述 Interface Map<K,V> K:键的类型 V:值的类型 将键映射到值的对象:不能包含重复的键:每个键可以映射到最多一个值 创建Map ...
- 【Flutter】Dart 数据类型 Map 类型 ( 创建 Map 集合 | 初始化 Map 集合 | 遍历 Map 集合 )
文章目录 一. Dart 数据类型 Map 类型 二. Map 类型初始化并赋值 1. 创建 Map 对象同时进行初始化操作 2. 先创建 Map 对象再进行赋值 三. Map 集合遍历 1. 使用 ...
- 1.5 Map集合:HashMap 和TreeMap 类
Map集合,HashMap,TreeMap Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键(key)对象和一个值(value)对象.用于保存具有映射关系的数据 ...
- java 中map_Java Map集合详解
Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象.其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素 ...
- 进阶 09 Map集合
Map集合 java.util.Map<k,v>集合 Map集合的特点: 1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)2.Map集合中的元素,key和va ...
- Java进阶(七)Set系列集合、Map集合体系
七.Set系列集合.Map集合体系 需要学会什么? Set系列集合的特点:Set系列集合的特点和底层原理. 集合工具类Collections:快速的对集合进行元素的添加.排序等操作. 综合案例:把Co ...
最新文章
- Appium入门实例(Java)
- 借助Redis完成延时任务
- java自定义分页标签_自定义分页标签--仿javaeye分页效果
- java 作业调度_Java使用quartz实现作业调度
- 【数据库】E-R图向关系模型转换的规则
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(8月5日-8月12日)
- zabbix 数据采集方法
- WPF的DataGrid的某个列绑定数据的三种方法(Binding、Converter、DataTrigger)
- Apache Jackrabbit Oak 1.12.0 发布,可扩展、高性能分层存储库
- OrCAD导出BOM表的方法
- 如何使用VSCode开发Qt项目?
- c语言成绩管理程序设计,成绩管理程序设计报告(含代码C语言
- Qt读取/写入Excel数据--QAxObject
- hdmi怎么支持2k分辨率_安卓机皇发布!全系支持2K分辨率+120Hz刷新率
- NAACL 2022 | FACTPEGASUS:抽象摘要的真实性感知预训练和微调
- Tolua使用笔记三:Tolua协程用法
- Oracle动态视图v$sql的说明和使用
- 中职组网络安全C模块全漏洞脚本讲解包含4个漏洞的脚本
- uniapp在安卓端实现hanziWriter
- 一套键盘鼠标跨电脑切换使用
热门文章
- macbook下载苹果版Photoshop cc2019 for mac
- jQuery 选择器汇总-思维导图-选择器
- mybatisplus 操作另一个数据库的数据_c#连接sql数据库以及操作数据库
- toybox执行linux程序,VirtualBox 的命令行用法
- ajax mysql点赞_ajax 实现点赞功能
- 基坑计算理论m法弹性支点法_基坑支护结构设计应注意的一些问题
- Php数组面包屑导航,PHP 导航提示(面包屑型轨迹)
- java i数据类型_数据类型 I
- java监控队列_java-Spring Rabbit监听输出队列或接收
- git常用命令之stash