Map.Entry.comparingByValue().reversed() 的类型是什么? [复制]

2023-11-24

我有一个地图条目列表

Map<String, Integer> map = new HashMap<>();
...(fill the map)...
List<Entry<String, Integer>> entries = new ArrayList<>(map.entrySet());

我想根据值对其进行排序这个答案,但顺序相反。当我做

Comparator<Entry<String, Integer>> cmp = Entry.comparingByValue();
entries.sort(cmp.reversed());

一切正常。但是当我尝试将上面两行缩短为

entries.sort(Entry.comparingByValue().reversed());

编译器返回

error: incompatible types: Comparator<Entry<Object,V>> cannot be converted to Comparator<? super Entry<String,Integer>>
        entries.sort(Entry.comparingByValue().reversed());
  where V is a type-variable:
    V extends Comparable<? super V>

这看起来很奇怪,因为 Comparator 的实现reversed()默认方法只是将其传输到Collections.reverseOrder()我可以将上面的行更改为

entries.sort(Collections.reverseOrder(Entry.comparingByValue()));

上班。但什么是正确的类型Entry.comparingByValue().reversed()?

Comparator<Entry<String, Integer>> cmp = Entry.comparingByValue().reversed();

似乎不起作用。省略类型参数Entry<String, Integer>有效,但这会导致编译器稍后发出“未经检查的方法调用”警告。


在这种情况下,编译器不够聪明,无法推断出泛型类型参数。您可以明确指定它们:

entries.sort(Entry.<String, Integer>comparingByValue().reversed());

问题是您首先需要返回的比较器的类型comparingByValue了解返回的类型reversed.

我看不出有什么充分的理由解释为什么聪明的编译器不能向后工作并知道这一点sort需要特定类型,所以reversed必须是一个特定的类型,所以comparingByValue必须是特定类型。但事情并非如此。

类型推断仍在研究中(最新版本为 Java 10),所以也许将来,谁知道呢。

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

Map.Entry.comparingByValue().reversed() 的类型是什么? [复制] 的相关文章

随机推荐

  • 检查Sphinx doc是否调用了脚本

    我目前正在尝试为使用 ArcGIS arcpy 库的脚本生成 sphinx 文档 当 sphinx 尝试在生成文档时运行脚本时 我遇到了问题 因为 arcpy 脚本从 arcgis gui 获取输入参数 由于 sphinx 在没有 gui
  • Java Logging API 生成空日志文件

    我尝试阅读有关 Java 日志记录 API 的教程 www vogella com articles Logging article html 但生成的文件是空的 在 Netbeans Eclipse 以及从 cmd 运行 jar 中进行了
  • 返回初始化列表机制

    如果返回可从初始值设定项列表构造的类型时 涉及什么机制 我不指定要返回的类型 如下所示 std array
  • 如何导出 ECDiffieHellmanCng 的私钥

    我正在尝试从一个新实例导出密钥ECDiffieHellmanCng对象 以便我稍后可以使用相同的键创建它的实例 但我在尝试导出它时遇到错误 Create new ECDiffieHellmanCng which automatically
  • NSUserNotificationAlertStyle plist 键不起作用

    我正在 10 8 上处理示例用户通知 但是当我将其设置为警报时 关键的 NSUserNotificationAlertStyle 不起作用 我的应用程序仍然将其显示为横幅 这是通过系统首选项控制它的唯一方法 但是如果我想设置默认行为怎么办保
  • python3中的日期时间到十进制小时和分钟

    我有一个dataframe with meteorological数据每30 minutes 使用我的日期时间索引 我需要创建一个列timestamps 但它必须在decimal 下面是示例 In 134 df index 0 3 Out
  • 提交后如何在文本输入中保留值?

    我想验证表单以确保用户输入姓名 如果用户只输入姓氏 则表单应再次显示 并在姓氏字段旁边显示一条错误消息 但名称值应still在那里 我不知道该怎么办 呵呵 我只是一个 PHP 程序员新手 这是我到目前为止所拥有的
  • 将 eval() 限制在一个狭窄的范围内

    我有一个 javascript 文件 它读取另一个文件 该文件可能包含需要 eval 的 javascript 片段 脚本片段应该符合 javascript 的严格子集 该子集限制了它们可以执行的操作以及可以更改的变量 但我想知道是否有某种
  • 从 Robot Framework 中的不同路径导入自定义库

    我在不同的文件夹中有几个测试文件 针对不同的问题 并且我想使用一个单独的文件夹来包含我使用的所有自定义库 所有子文件夹 包括自定义库 都将位于一个主文件夹中 如何从分离的文件夹中导入测试库 这是文件夹层次结构 Test Library Te
  • 扩展部分类在实体框架中的放置

    由于部分类必须位于同一名称空间中 因此我唯一的选择是将它们放置在与 edmx 相同的目录中 如果是这种情况 我假设文件名总是必须不同 另外 我还有什么需要做的 还是我只是在同一目录中创建另一个同名的部分类并向其添加属性 方法 部分类应与 e
  • 仅当 Foo.js 被导入到某个地方时,VSCode 才会通过相应的 Foo.d.ts 为 Foo.js 提供智能感知;如何在 Foo.js 本身中启用智能感知?

    设置是一个 创建 React 应用程序 其中包含以下内容jsconfig json compilerOptions experimentalDecorators true baseUrl src include src 目录结构 src C
  • 将预定义的 HTML 连接到 Backbone 中的模型和视图

    我刚开始使用 Backbone js 所以我必须说我还不太熟悉这些概念 我已经预定义了 HTML 我想使用 Backbone 来管理它 这很重要 我想保持这样 假设这是我的 HTML 部分 div class pig h1 Harry h1
  • 是什么导致Android的ContentResolver.query()返回null?

    在什么条件下会发生内容解析器 query 返回 null 而不是游标对象 我以前得到过空游标 但刚刚意识到该方法也可以返回 null 不过 我无法追踪发生这种情况的情况 由于今天收到的我的应用程序的用户崩溃报告 我偶然发现了同样的问题 如果
  • 使用 CUDA 进行光线追踪 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我目前正在实施光线追踪器 由于光线追踪的计算量非常大 而且我无论如何都会研究 CUDA 编程 所以我想知道是否有人有将两者结合起来的经验 我无法真正判断计算模型是否匹配 我想知道
  • Internet Explorer 中的对象预期错误

    该代码在 Firefox 和 Chrome 中正常工作 当页面在 Internet Explorer 中加载时 您会收到错误消息 用户代理 Mozilla 4 0 兼容 MSIE 8 0 Windows NT 6 1 WOW64 Tride
  • 主要Bug,XCAssets文件夹中创建的Sprite Atlas不支持批量渲染

    我开始在 XCAssets 文件夹中使用新的 Sprite Atlas 而不是将我的图集放在项目文件夹中 但是我注意到 当我这样做时 我的节点不再被批量渲染 这导致大量低效的绘制调用 这完全违背了使用图集的目的 需要明确的是 这是我用来获取
  • Cloudant 上使文档过期的设计模式

    因此 当删除文档时 元数据实际上会永久保留 对于像 cloudant 这样的托管服务 每个月都会产生存储费用 我反而想完全清除已删除的文档 我在某处读到过有关您使用的设计模式的信息dbcopy为了将文档放入 当前 数据库 然后定期删除过期的
  • 修补没有 <> 的递归定义列表

    Context 我们都知道递归定义的斐波那契数列 fibs 1 1 zipWith fibs tail fibs gt fibs 1 1 2 3 5 9 13 21 34 55 89 Question 我正在尝试在几个地方 修补 它 以便
  • StrictMode.ThreadPolicy.Builder 的目的和优点?

    我提到StrictMode ThreadPolicy Builder来自安卓文档StrictMode ThreadPolicy Builder 我不清楚StrictMode ThreadPolicy Builder 当我们必须使用这个类时S
  • Map.Entry.comparingByValue().reversed() 的类型是什么? [复制]

    这个问题在这里已经有答案了 我有一个地图条目列表 Map