- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在寻找 Set
Java 中的实现,它提供基于元素属性的查找。用 Guava 的术语来思考它可以使用 Function<Element, SearchKey>
来构建。 (预计在所有集合元素中都是唯一的)并提供一种方法 find(SearchKey key)
返回 Element
该函数将为其返回 key
.
需要满足的明显假设:
function(element)
的结果在 element
的整个生命周期内是恒定的在集合中。原因:
有时需要 Set<Element>
并且字段类型不能更改为 Map<SearchKey, Element>
(如在 JPA 实体中或在第 4 方代码的情况下)。不过,在构造这样一个对象时,可以安全地使用自己的 Set
用 Map
实现- 类似的能力。
备选方案:
我已经找到了一些替代方案,但没有一个看起来是完美的
Map
类似功能 - 使用线性搜索 find(SearchKey)
实现(适用于每个 Set
实现:)TreeSet
与 Comparator
比较SearchKeys
- 有点像hack,尤其是它不再考虑元素相等性ceiling
并要求您构建人工 Element
用于查找目的(呃……)(如果您想回答您不知道其他选择 - 节省您的时间并且不要。这是我已经知道的,我将无法接受你的答案。)
最佳答案
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/
给定一个 MapSet,如何使用模式匹配检测它是否为空? # What goes in the question marks? def my_func(????), do: IO.puts("This
我必须完成以下操作: 要求: 在包 coll.MapSet 中,实现一个扩展 AbstractMap> 的新类 MapSet 并实现 Iterable,其中 K 代表通用键,V 代表通用值: publ
我只需要保留唯一值,但我很困惑应该使用哪种数据结构。稍后我只会阅读整个数据结构。 一种方法是使用仅包含唯一元素的MapSet。 第二种方法是每次使用 Enum.member? 检查某个项目是否已存在
我正在寻找 Set Java 中的实现,它提供基于元素属性的查找。用 Guava 的术语来思考它可以使用 Function 来构建。 (预计在所有集合元素中都是唯一的)并提供一种方法 find(Sea
iex> MapSet.new(1..32) |> Enum.to_list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1
我是一名优秀的程序员,十分优秀!