如何从 HashMap 中删除重复值

2023-12-08

我不知道如何最好地描述我的问题,但就是这样,我试图从中删除相同的名称(值)HashMap<String, String> map = new HashMap<String, String>();

例如,如果此地图包含类似的名称

    map.put("Vivaldi","Antonio");
    map.put("Belucci", "Monica");
    map.put("Gudini", "Harry");
    map.put("Verdo", "Dhuzeppe");
    map.put("Maracci", "Bruno");
    map.put("Carleone", "Vito");
    map.put("Bracco", "Luka");
    map.put("Stradivari", "Antonio");

我想使用方法从中删除所有值为“Antonio”的条目removeTheFirstNameDuplicates,我在谷歌上查了几天,所有的例子都接近我想要的,但不是我真正需要的。

我的想法是,我需要一些东西来检查地图,如果它包含相同的值,则删除重复的值。但我该怎么做呢?


您可以使用以下方法来完成此操作,该方法仅迭代地图一次:

private static void removeTheFirstNameDuplicates(final Map<String, String> map) {
    final Iterator<Entry<String, String>> iter = map.entrySet().iterator();
    final HashSet<String> valueSet = new HashSet<String>();
    while (iter.hasNext()) {
        final Entry<String, String> next = iter.next();
        if (!valueSet.add(next.getValue())) {
            iter.remove();
        }
    }
}

The add()方法上HashSet将返回false如果值已添加到集合中。上面的方法使用它来检测是否已找到重复项,然后从HashMap通过使用remove()迭代器上的方法。

值得注意的是,根据Map您使用的实现,可能无法保证迭代顺序,因此也无法保证您删除的重复项。

如果你要使用TreeMap而不是一个HashMap您一定会按键按字母顺序迭代地图,例如贝卢乔、布拉科、卡里昂……维多。然后你就会一直保留斯特拉迪瓦里并删除维瓦尔第。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 HashMap 中删除重复值 的相关文章

随机推荐

  • 捕获没有文本框的键盘输入

    我有一个应用程序 可以从健康卡中读取数据并解析它们以获取出生日期 健康卡 和姓名等基本信息 现在 我有一个文本框 可以从刷卡器中获取输入 效果很好 但我觉得可能有更好的方法 我希望在应用程序的后台有一个键盘侦听器 它可以捕获刷卡器的输入并解
  • Crystal Reports - 计数公式

    我正在 Crystal 中开发一份报告 我需要对具有几种不同状态的特定字段进行计数 例如 我的报告中有一个 StatusType 字段 其中包含的值是 In Process Rejected On Hold or Submitted 我希望
  • 如何检查是否给出了参数?

    Checks if an argument was specified if argv 1 strcpy Buff1 argv 1 else strcpy Buff1 default 如果我运行 program test 增益1 测试 如果
  • Epson epos sdk收据对齐问题

    我目前正在使用适用于 Android 的 epson ePOS SDK 我需要打印收据 菜单名称在同一行中左对齐 价格右对齐 但它无法正常工作 我的临时解决方案是添加一些提要行以使其价格正确对齐 是否可以使文本在同一行中左右对齐 以下附件
  • RecyclerView 中的 Admob 原生广告 [重复]

    这个问题在这里已经有答案了 我想在我的一个具有 recyclerview 的报价应用程序中实施 admob 原生广告 我正在学习 android 编程 并试图找到原生广告的教程 但没有任何好的教程可用于在 recyclerview 中实现原
  • Swift 无法通过委托调用协议方法

    我有两节课 一个类被命名为ViewController另一个类名为TabView 我的目标是调用一个函数changeTab 它位于 ViewController 的 TabView 类内部 不知怎的 我遇到了麻烦 因为每次我的代表nil 这
  • 在传递给 mysql_query 之前有效地转义 C 中的引号

    简而言之 我通常使用 sprintf 在 C 中构建 MySQL 查询 i e sprintf sqlcmd update foo set dog lab where description s some desc mysql query
  • 在 Vim 中缩进 Javascript - 函数中 Lambda 函数的问题

    我在 vim 中遇到 JavaScript 缩进问题 一切都很好 除了内联函数作为函数参数的缩进不起作用 这是一个只有 javascript 的问题 不涉及 html Example someFunc function if foo bar
  • Base64 编码 .Rda 文件

    All 我正在尝试弄清楚如何将 Rda 文件放入 Base64 编码中 以便将其传送到 API 或从 API 传送出来 我真的很苦恼如何做到这一点 这是我得到的 但我认为它偏离了目标 cuse lt read table http data
  • 设置TKinter标签的位置?

    我正在尝试制作一个程序 在窗口的左下角和右下角放置一个标签 我的代码如下 root Tk root geometry 1000x250 var StringVar label Label root textvariable var var
  • 使用 karate.forEach 和 karate.set 从 json 数组中提取值的索引

    我有以下 json id 1A 2B name rs mk 我想提取名称为 rs 或 mk 时的id值 不会出现重复的情况name值和大小id and name键将始终匹配 所以我创建了以下场景 我迭代了name使用 forEach 的数组
  • 解析 ruby​​ 中的字符串日期,例如“28-May-10”

    我尝试使用解析 Date parse 28 May 10 to s Returns 0010 5 28 距离现在还有 2000 年 我怎样才能让 ruby 正确解释两位数年份 谷歌上有很多字符串到日期的转换技巧 但大多数处理数字月份而不是
  • SerialPort 类和 DataReceived 事件...获取字节。使用 ReadLine 还是 ReadExisting?有什么例子吗?

    我想通过串行发送和接收字节 我的接收器应该异步获取字节 我写了下面的小例子 看起来可行 但它给我留下了一种不安的感觉 我真的应该使用 WriteLine ReadLine 吗 正如现在所写 是否有可能为每个字节调用事件处理程序 m port
  • cmake - 未定义的引用

    我是新来的cmake并且知道这个问题之前已经被问过 但仍然找不到我做错了什么 我有一个带有文件夹的外部库 include and lib The include文件夹包含所有标题 h 和 lib文件夹包含所有源 c files 在我的项目中
  • 错误:参数类型 double/string 等不符合预期类型“AnyObject”

    我看了一些 iOS 编程教程 并对 AnyObject 有疑问 桥接不起作用 我有以下代码 import Foundation class CalculatorBrain private var accumulator 0 0 var in
  • 在 64 位进程中加载​​ 32 位 dll [重复]

    这个问题在这里已经有答案了 我希望我的 C 应用程序有条件地运行本机方法 有条件地选择运行 dll 的 x86 或 x64 版本 每当我尝试加载 32 位 dll 时 都会收到以下错误 Unhandled Exception System
  • 将 mat 文件转换为 pandas 数据框

    我想转换这个文件到 pandas 数据框 import pandas as pd import scipy io mat scipy io loadmat cardio mat cardio df pd DataFrame mat 我收到此
  • 继承int的类中的位运算

    我继承了 int 因为我想实现一个简单的按位运算接口 由于 int 的不可变性 我必须使用整数成员函数 例如int and class Bitset int def setitem self index value if value sel
  • Azure Function ServiceBusReceivedMessage ApplicatonProperties 为空

    我正在创建一个作为 ServiceBus 触发器的 Azure 函数 FunctionName RetryRack public async Task Run ServiceBusTrigger RackIntegration topic
  • 如何从 HashMap 中删除重复值

    我不知道如何最好地描述我的问题 但就是这样 我试图从中删除相同的名称 值 HashMap