当前位置: 首页 > 面试题库 >

如何转换地图 到地图?(选项:使用番石榴)

贺福
2023-03-14
问题内容

我有一个Map<String, String>String关键无非是像“123”等我得到的数值,因为这个数值是从UI在我的JSF组件来数值。我不想更改UI组件的合同。

现在,我想Map<Long, String>基于上面创建一个Map,我transformMaps类中看到了一些方法,但是所有方法都集中在转换值而不是键上。

有没有更好的转换Map<String, String>方法Map<Long, String>


问题答案:

Java 8的更新

您可以使用流来执行此操作:

Map<Long, String> newMap = oldMap.entrySet().stream()
  .collect(Collectors.toMap(e -> Long.parseLong(e.getKey()), Map.Entry::getValue));

假定所有键都是Longs的有效字符串表示形式。另外,转换时可能会发生冲突;例如,"0""00"两个地图0L

我认为您必须遍历地图:

Map<Long, String> newMap = new HashMap<Long, String>();
for(Map.Entry<String, String> entry : map.entrySet()) {
   newMap.put(Long.parseLong(entry.getKey()), entry.getValue());
}

代码假定您已经清除了其中的所有值map(因此没有无效的长值)。

我希望有更好的解决方案。

编辑

CollectionUtils#transformedCollection(Collection, Transformer)在Commons
Collection-Utils中遇到了该方法,它看起来可以满足您的要求。
请注意,它仅适用于实现的类Collection



 类似资料:
  • 问题内容: 如何转换 为? 这不起作用: 问题答案: 如果您只包含,则可以这样操作: 如果不是,则可以替换 为。

  • 问题内容: 编辑: 我已经重新组织了这个问题,以反映自从可用以来的新信息。 请先阅读此问题及其答案,但基本上得出的结论是,番石榴图不会异步计算和执行驱逐。给出以下地图: 进入条目后经过十分钟后,直到再次“触摸”地图后,该条目仍不会退出。执行此操作的已知方法包括常用的访问器- 和和 。 我的问题的第一部分[已解决]: 还有哪些其他调用导致地图被“触摸”?具体来说,有谁知道是否属于这一类? 对此感到疑

  • 问题内容: 我需要转换为。我已经为这个问题苦苦挣扎了一段时间。 很明显如何转换为: 但是我找不到解决最初的问题。有一些易于使用的Java-8方法吗? 问题答案: 我想您很亲密,您需要将这些条目添加到a 并从那里收集。我使用了已经存在的,但是您也可以使用某种。 好吧,如果您不想增加这些实例的额外开销,则可以做些不同:

  • 我有一个java map:

  • 问题内容: 我有一个Map是一个到值列表的映射,但是我需要将其求逆,以便 变成 例如我有 我想看看 除了要遍历映射条目并创建set条目(如果不存在)并添加到列表等之外,Java 8中还有什么更简单的方法可以做到这一点?我一直认为这确实很明显,但我无法解决。 提前致谢 问题答案: 未经测试,但是您可以执行以下操作:

  • 问题内容: 我们如何用番石榴来做到这一点?注意返回类型的存在,因为许多键可以在任何法线映射中映射到相同的值。 似乎坚持价值观的统一性,但我没有这种奢侈。 问题答案: 你可以这样做: 请注意,几乎在您每次编写或类似内容时,a 或a 都是您真正想要的。