gpt4 book ai didi

Java:用于对对象进行排序/按该顺序维护键的数据结构?

转载 作者:行者123 更新时间:2023-12-01 17:40:25 24 4
gpt4 key购买 nike

我想维护 Odp 类型的对象集合。 Odp 实现了 Comparable。我需要能够使用其整数名称引用集合中的对象。该整数必须与其排序顺序(而不是插入顺序)相对应。每个整数仅适用于一个 Odp,反之亦然。

我有一个函数compareOdp(Odp o1, Odp o2)返回一个表示两个参数相似度的数值。我以这样一种方式设置 Odp 集合,以便很容易提出诸如“集合中最接近 foo 的 Odp 是什么?”之类的问题。或“在这几个 Odp 对象集合中,它们彼此之间的距离有多近?”

执行此操作的最佳方法是什么?树形图?哈希BiMap?

相关问题:

假设我有以下一组对象:o1 , o2 , o3包含在集合中col 。他们的排序顺序是

o2
o3
o1

我想问col :“列表中的第 n 个对象是什么?”据我所知,SortedSet 和 TreeMap 没有办法做到这一点。我想我可以迭代一遍,但感觉应该有一个更简单的方法。

最佳答案

如果您使用的是 Java 6,则 NavigableSet API(由 TreeSet 实现)可以提供帮助。

public static Odp nearest(Odp o, NavigableSet<? extends Odp> set) {
Odp f = set.floor(o), c = set.ceiling(o);
if (f == null)
return c;
if (c == null)
return f;
int df = compareOdp(o, f), dc = compareOdp(c, o);
return (df <= dc) ? f : c;
}

关于Java:用于对对象进行排序/按该顺序维护键的数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1546096/

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