java hashmap value值_如何在Java中的HashMap中打印键的所有值
Map;lt;String, Strinp;gt; map = new HashMap;lt;String, Strinp;gt;();
map.put("1","xyz");
map.put("1","abc");
map.put("1","cde");
map.put("2","err");`
`
对于上面的地图,我想获取与键1.关联的所有值。预期输出。
密钥:: 1个值是:: xyz,abc,cde
值的顺序并不重要。
如果您需要密钥已失效(甚至不知道原因),请重新考虑使用另一个Collection。
您可能需要一个多图-docs.guava-libraries.googlecode.com/git/javadoc/com/google/
首先,您需要了解HashMap的概念及其内部生活。 我建议您在我的教程中介绍所有这些内容!
在地图中,键应始终为unique。如果将新值与现有键相关联,它将覆盖现有条目的值。
您可能需要检查接口的Map#put(K,V)方法。
If the map previously contained a mapping for the key, the old value
is replaced by the specified value.
因此,在您的情况下,地图始终将"cde"作为键"1"的值。
使用MultiMap
MultiMap mapValue = new MultiValueMap();
mapValue.put("1","xyz");
mapValue.put("1","abc");
mapValue.put("1","cde");
mapValue.put("2","err");
System.out.println("Map :" + mapValue);
输出:Map : {2=[err], 1=[xyz, abc, cde]}
映射不能有重复的键。
如果您想实施所描述的内容。首先,您需要使用多图
你在做什么错了。
地图不允许重复。
所以一键----------->一个值
如果您看到put()的文档
Associates the specified value with the specified key in this map (optional operation). If the map previously contained a mapping for the key, the old value is replaced by the specified value. (A map m is said to contain a mapping for a key k if and only if m.containsKey(k) would return true.)
您可以像下面一样打印每个key和value的值
Ex:
Map;lt;String, Strinp;gt; map = new HashMap;lt;String, Strinp;gt;();
for (Map.Entrp;lt;String, Strinp;gt; entry : map.entrySet()) {
System.out.println("Key =" + entry.getKey() +", Value =" + entry.getValue());
}
您可以执行以下操作:
for (String k : map.keySet())
System.out.println(k);
这会在HashMap中打印键,但不能保证任何顺序。
从有关HashMap.put(K key,V value)方法的Java文档中:
Associates the specified value with the specified key in this map. If the map previously contained a mapping for the key, the old value is replaced.
所以你不能那样做。
HashMap :: put覆盖与键关联的旧值。您必须在每个地图条目中放置一个列表,然后在适当的列表中插入新值。
您无法使用这种类型的地图执行此操作。地图中的键必须是唯一的。
为此,您应该声明一个映射,其中的键是字符串,而值是字符串的集合。
Map;lt;String,Collectiop;lt;Strinp;gtp;gt; map = new HashMap;lt;String,Collectiop;lt;Strinp;gtp;gt;();
要列出它的值,您可以执行此操作
for(String valueOfKey : map.get("key") {
//print or something else
}
请注意,要向其中添加一些值,您必须首先检查密钥是否已存储,如果尚未存储,则首先声明一个集合。
if(map.contains("key") == false) {
map.put(new ArrayLisp;lt;Strinp;gt;());
}
map.get("key").add("value");
因为这是众所周知的设计,所以您可能对guava框架和Multimap感兴趣
该类的好处是它已经实现了如何添加逻辑和从中检索值的逻辑。
在地图中,您不能有重复的键。因此,根据您的情况,键1的最终值将保留在" map"中。
您可以执行以下操作来达到您的期望
Map> map = new HashMap<>();
List list=new ArrayList<>();
List list1=new ArrayList<>();
list.add("xyz");
list.add("abc");
list.add("cde");
list1.add("err");
map.put("1", list);
map.put("2",list1);
System.out.println(map.get("1"));
这是不可能的,因为将一个键值映射到一个值,所以将其称为映射。多个键可以映射到相同的值,但不能相反。
您可能想要的是一个映射到List的映射:
final Map> map = new HashMap<>();
if (map.get("1") == null) {
map.put("1", new ArrayList());
}
map.get("1").add("xyz");
// ...
用于添加的辅助功能可能很方便
public static void add(final K key, final V value, final Map> map)
{
if (map.get(key) == null) {
map.put(key, new ArrayList());
}
map.get(key).add(value);
}
您不能为哈希映射使用重复键,请参阅以下S.O,了解HashMap中重复键的处理方式
java hashmap value值_如何在Java中的HashMap中打印键的所有值相关推荐
- java 反射父类私有属性值_如何在Java中通过反射访问父类的父类的私有字段? - java...
在一个API中,我使用的是一个抽象类(A类),该类具有一个私有字段(A.privateField). B类在API中扩展了A类. 我需要扩展B类的实现,即C类,但是我需要A类的privateField ...
- java aes密钥生成_如何在Java(Android)中生成与.Net中相同的AES密钥?
我需要从.Net WebService提供的salt和密码生成 Java( Android)中的AES密钥.我需要使用与.net生成的密钥相同的密钥和相同的密码和盐(使用Rfc2898DeriveBy ...
- java中转json字符串_如何在Java中转义JSON字符串-Eclipse IDE技巧
java中转json字符串 在Java应用程序中工作或进行JSON解析时,通常很常见的做法是从某些资源(例如RESTful Web服务)中复制粘贴JSON字符串,然后使用Jackson库解析JSON. ...
- Java poi 列移动_如何在java xssf中移動列poi
如何將現有列數據和格式化到Apache POI中的下一列並將下一列移到右側.如何在java xssf中移動列poi 我試過了. 讓說我的代碼是這樣... XSSFCell oldCell = work ...
- java 精确到微妙_如何在Java中以微秒精度测量时间?
我在Internet上看到应该使用System.nanoTime(),但这对我不起作用-它为我提供了毫秒级的时间.我只需要函数执行前后的微秒,就可以知道需要多长时间.我正在使用Windows XP. ...
- java整数的因式分解_如何在Java中找到整数的质数-因式分解
java整数的因式分解 编程课程中的常见家庭作业/任务之一是关于Prime Factorization. 要求您编写一个程序以找到给定整数的素因子 . 一个数字的素数因子是将精确地除以给定数字的所有素 ...
- java panel画椭圆_如何在Java 2D中绘制椭圆?
在Ellipse2D类定义由成帧矩形定义的椭圆.您可以使用double或float值创建椭圆.使用双精度值创建椭圆时,请使用Ellipse2D.Double类.对于浮点值,您可以使用Ellipse2D ...
- java 方法当参数_如何在Java中将函数作为参数传递?
如何在Java中将函数作为参数传递? 这个问题在这里已有答案: Java Pass方法作为参数 14个答案 是否可以将方法作为参 ...
- java 千位分隔符_如何在Java中设置千位分隔符?
问题 如何在Java中设置千位分隔符?我有BigDecimal的String表示,我想设置千位分隔符并返回String. #1 热门回答(180 赞) 你可以使用格式功能","; ...
- java 判断是否换行_如何在java中检测换行符
是的,我已经阅读了一些关于换行符的其他帖子,但他们没有帮助我.如何在java中检测换行符 我的Java程序应该读取一个.PHP文件,并将源代码分成逐行格式.问题是我似乎无法区分一个换行符和另一个换行符 ...
最新文章
- 微软.net一些类的源码
- SQL Server中Rollup关键字使用技巧 (转)
- apache+tomcat​现在我们实现session共享
- Java事务处理全解析(二)——失败的案例
- Log4Net简单使用
- OpenStack 计算节点删除
- ASP.NETCore编程实现基本认证
- 工作162:选择日期自传父
- abd shell关闭所有程序_第十六章 Shell编程
- docker container
- jenkins 插件目录_Windows下allure+pytest+jenkins集成手册!
- c语言链表复数,[蓝桥杯][算法提高VIP]复数求和-链表初学者看过来(C语言代码)...
- 通过iMazing将Safari浏览器的书签导出至电脑
- Arduino Atmega328P烧写bootloader及熔丝
- 计算机无线网络计算机文件共享,无线局域网共享_在同一个无线局域网内如何共享文件?...
- 2019东北四省 H. Skyscraper (树状数组)
- 二十四节气-寒露,月斜寒露白,此夕去留心
- kubernetes系列之一:Kubernetes如何利用iptables对外暴露service
- Word查找红色文字 Word查找颜色字体 Word查找突出格式文本
- 电子烟市场Juul来袭,锐刻福禄们该如何做防?
热门文章
- Microsoft® .NET Micro Framework简介
- VMware:虚拟化技术为运营商消除隐患
- Java练习 SDUT-1294_选票统计
- CentOS 6.5 yum安装mysql5.6或其他版本【默认yum只能安装mysql 5.1】 by jason
- html5 postMessage解决跨域、跨窗口消息传递[转载]
- S3C6410 SD卡启动uboot分析(详细)
- Windows服务器系统的端口要求
- Linux DRM 理解
- Linux电源管理-Runtime PM
- vs怎么设置php文件调试,使用vscode 编辑调试php 配置方与VSCode断点调试PHP