gpt4 book ai didi

java - 按键或值对 TreeMap 进行排序

转载 作者:行者123 更新时间:2023-11-29 03:21:05 25 4
gpt4 key购买 nike

情况:

我有一个 Map,一个 TreeMap 更准确地说是看起来像

TreeMap<String, Integer>

我必须能够以升序或降序的方式对键或值进行排序。结果必须是 Map 之类的

Map<String, Integer>

不是 ArrayList 或类似的东西,因为我的代码的其余部分(阅读:分配)将不再工作。我已经搜索过但找不到适合我需要的东西。这可能吗? double 值可能不会丢失。

最佳答案

如果你使用两个相互支持的 BiMap,那么你实际上有一个 map 。类似的东西:

import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;

private BiMap<Integer, String> localid = HashBiMap.create();
private BiMap<String, Integer> inverse = localid.inverse();

您可以将每个引用、localid 和 inverse 视为它们自己的 map ,但对一个的更改会反射(reflect)在另一个中。唯一的小缺点是现在键和值都必须是唯一的,因为一个的值是另一个的键。对于大多数情况,这不是问题。

为了对其进行排序,您可以随时创建一个本地副本,它是一个 treeMap,并强制执行排序。例如。

ImmutableMap.copyOf(Maps.newTreeMap(bimap))

现在,如果您从不更改 map ,这将提供一个排序 View ,您可以通过其中任何一个来完成。

编辑:TreebasedTable 的每个值都有两个键,您可以使用比较器对任一键集进行排序。我不确定这是否正是您所需要的,因为键集是独立的,但您可以稍微重构代码以使其成为可行的解决方案。

关于java - 按键或值对 TreeMap 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23611806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com