gpt4 book ai didi

java - "IndexedSet", "MapSet"或 "SetMap"Java 实现

转载 作者:搜寻专家 更新时间:2023-11-01 02:47:42 24 4
gpt4 key购买 nike

我正在寻找 Set Java 中的实现,它提供基于元素属性的查找。用 Guava 的术语来思考它可以使用 Function<Element, SearchKey> 来构建。 (预计在所有集合元素中都是唯一的)并提供一种方法 find(SearchKey key)返回 Element该函数将为其返回 key .

需要满足的明显假设:

  • function(element) 的结果在 element 的整个生命周期内是恒定的在集合中。
  • 函数给出所有集合元素的唯一结果

原因:
有时需要 Set<Element>并且字段类型不能更改为 Map<SearchKey, Element> (如在 JPA 实体中或在第 4 方代码的情况下)。不过,在构造这样一个对象时,可以安全地使用自己的 SetMap 实现- 类似的能力。

备选方案:

我已经找到了一些替代方案,但没有一个看起来是完美的

  • 没有Map类似功能 - 使用线性搜索 find(SearchKey)实现(适用于每个 Set 实现:)
  • 使用TreeSetComparator比较SearchKeys - 有点像hack,尤其是它不再考虑元素相等性
    “查找”方法称为ceiling并要求您构建人工 Element用于查找目的(呃……)
  • “等价集”( http://code.google.com/p/guava-libraries/issues/detail?id=576 ) - 但没有实现,而且似乎也不会实现

(如果您想回答您不知道其他选择 - 节省您的时间并且不要。这是我已经知道的,我将无法接受你的答案。)

最佳答案

I'm looking for a Set implementation in Java that provides lookup based on elements properties.

这就是 Map 的用途,是的,您确实需要构建一个关键对象来表示被查找时的内容。

这是 Java 中最简单、更高效的解决方案,因此虽然有点不愉快,但我不会担心。

顺便说一句:Set 通常作为 JRE 中 Map 之上的一个层来实现,恕我直言,这并不理想。

关于java - "IndexedSet", "MapSet"或 "SetMap"Java 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18372818/

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