如何获取Collectors.toMap合并函数中的key?

2024-03-09

当发现重复的按键输入时Collectors.toMap(),合并函数(o1, o2)叫做。

问题:如何获取导致重复的密钥?

String keyvalp = "test=one\ntest2=two\ntest2=three";

Pattern.compile("\n")
    .splitAsStream(keyval)
    .map(entry -> entry.split("="))
    .collect(Collectors.toMap(
        split -> split[0],
        split -> split[1],
        (o1, o2) -> {
            //TODO how to access the key that caused the duplicate? o1 and o2 are the values only
            //split[0]; //which is the key, cannot be accessed here
        },
    HashMap::new));

在合并函数中我想根据key如果我取消映射,或者继续并采用这些值。


您需要使用自定义收集器或使用不同的方法。

Map<String, String> map = new Hashmap<>();
Pattern.compile("\n")
    .splitAsStream(keyval)
    .map(entry -> entry.split("="))
    .forEach(arr -> map.merge(arr[0], arr[1], (o1, o2) -> /* use arr[0]));

编写自定义收集器相当复杂。你需要一个类似的 TriConsumer (键和两个值),它不在 JDK 中,这就是为什么我很确定没有内置函数可以使用。 ;)

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

如何获取Collectors.toMap合并函数中的key? 的相关文章

随机推荐

  • PHP Curl 脚本每 10 分钟从远程服务器提取数据

    我正在尝试创建一个 PHP 脚本 该脚本从远程服务器提取 xml 数据 文本和图像 并将其插入本地数据库中 我需要每 10 分钟左右运行一次此脚本 并覆盖数据库中的现有数据 如果大约一分钟后没有收到服务器的响应 我希望请求中止 直到下一个脚
  • 如果可能,使用 AJAX 从 URL 获取 JSON 数据

    我想从下面的 URL 获取 JSON 数据 并以任何可能的方式在我的网页中使用它 可以吗 http fantasy premierleague com web api elements 100 http fantasy premierlea
  • AWS Elastic Beanstalk 504 网关超时

    我有一个在 AWS Elastic Beanstalk 上运行的节点服务器 我的一个端点接受巨大的有效负载 并且该函数本身相当缓慢且冗长 可能需要长达 10 多分钟的时间 由于业务需求 它必须保留为单个 HTTP POST 并且不能拆分得更
  • 错误通知:无法展开 RemoteViews:StatusBarNotification。在 Android 牛轧糖上

    I use OneSignal SDK显示通知 我这样做是在OneSignalPushService java OneSignalPushService java public class OneSignalPushService exte
  • Chrome 扩展配置代理用户名和密码

    我正在创建一个 chrome 扩展来动态更改代理设置 但在 chrome proxy settings set 函数中 无法配置代理的用户名和密码 因此 每次设置更改后我都必须手动输入凭据 但我发现在代理自动验证 https chrome
  • 为什么我在看似相似的 R 代码中遇到函数错误?

    首先 这是一个非常基本的问题 我不确定如何表达 如果问题是重复的 尽管我使用我认为可能合适的措辞进行了检查 我显然会撤回并欣赏该链接 第二 我是sure有一种更简单的方法可以完成我正在尝试的事情 但又不想偏离轨道 好的 我试图从 0 1 矩
  • 将主机字节顺序(小端)中的字符串转换为网络字节顺序(大端)

    我有一个十六进制字符串 内容如下18000000该字符串采用主机字节顺序 小端 我需要将其转换为网络字节顺序 大端 生成的十六进制字符串将是00000018 总结一下我需要转换 18000000 to 00000018 我如何在 PHP 中
  • pandas groupby 对象的聚合

    我正在尝试从数据块的 groupby 对象中聚合一些统计信息 我必须对数据进行分块 因为有很多 1800 万 行 我想找到每个块中每个组的行数 然后将它们加在一起 我可以添加 groupby 对象 但当一项中不存在组时 结果为 NaN 看这
  • BST 插入不起作用

    我试图实现二叉搜索树的代码 问题是以下代码不起作用 但如果我传递双指针来插入函数 如 insert struct bst node data 它就会起作用 我认为它也应该适用于传递单个指针 谁能解释一下这里的错误是什么 void inser
  • 使用 LaTeX Beamer 显示代码

    我在 Beamer 演示文稿中使用以下 LaTeX 代码 begin frame begin figure centering tiny lstset language python lstinputlisting code get ext
  • 记录器应该始终是最终的和静态的吗?

    可以从多个线程访问类 在这种情况下 记录器也必须是最终的和静态的吗 谢谢 所有主要的 java 日志记录包 java util logging log4j等 是同步且线程安全的 标准模式aprivate final static即使从多个线
  • CMS 中搜索表单的 POST 与 GET 方法

    我有点被一件事困住了 只是无法决定在搜索表单中使用 POST 还是 GET 方法 通常我会使用 GET 方法来创建这样的表单 这样用户就可以为他们得到的结果添加书签 但这一次 搜索表单出现在管理区域中 因此结果很快就会相关 并且无需为结果添
  • 如何清除主屏幕上 IOS Web 应用程序的缓存?

    我正在使用 JQTouch 使用元标记 apple mobile web app capable 在主屏幕上创建一个 Web 应用程序 但无论我从 设置 中清除缓存多少次 该 Web 应用程序的 Javascript 仍然是较旧的缓存版本
  • 服务已重新启动,并显示 START_NOT_STICKY

    我有一个在后台运行的服务 如果系统在内存不足的情况下杀死该服务也没关系 但是 我不希望系统重新启动该服务 因此 为了做到这一点 我从 onStartCommand 返回 START NOT STICKY 标志 如下所示 public int
  • android.widget.TabHost.dispatchWindowFocusChanged 处的 java.lang.NullPointerException(TabHost.java:298)

    我的程序的许多用户报告 强制关闭 相同的错误 但我无法重现该错误 因此很难调试 看来它与 TabHost 有关 我的应用程序中有两个 现在 我尝试扩展 TabHost 覆盖dispatchWindowFocusChanged 并测试 get
  • 如何使用 hilt 而不是使用工厂来初始化 viewModel 中的参数

    现在我使用 viewModelFactory 来初始化片段中 viewModel 的参数 class MyFragment Fragment override fun onCreateView inflater LayoutInflater
  • 无法通过 Android 应用程序插入 azure

    我正在为我的应用程序进行登录注册 我必须将它们与 microsoft azure 集成在一起 然而 尽管遵循了 microsoft azure 提供的教程 我仍然无法将我的 字符串 插入他们的数据库 代码中也没有错误 因此我不太确定哪里出了
  • 是否可以在不进行任何克隆的情况下与线程共享数据?

    当我将工作委派给线程时 我经常会有一段数据比所有线程的寿命都长 例如numbers在以下示例中 use std thread fn main let numbers vec 1 2 3 let thread a thread spawn p
  • 仅具有 Phantomjs 1.7/1.8/1.9 的 Courier-Fonts,可能特定于 CSS

    自从更新到 OpenSuse 12 2 后 我无法再使用 phantomjs 从 1 5 更新到版本 1 8 1 64 位 来创建屏幕截图 问题是缺少对 serif sansserif 字体的字体支持 仅使用类似 courier monos
  • 如何获取Collectors.toMap合并函数中的key?

    当发现重复的按键输入时Collectors toMap 合并函数 o1 o2 叫做 问题 如何获取导致重复的密钥 String keyvalp test one ntest2 two ntest2 three Pattern compile