我有一些Set昂贵的物品.
这些对象具有ID,并equals使用这些ID进行相等.
这些对象的类型有两个构造函数; 一个用于昂贵的对象,另一个用于设置ID.
所以我可以检查特定ID是否在Set使用中Set.contains(new Object(ID)).
但是,确定对象在集合中后,我无法获取集合中的对象实例.
如何获取该集合包含的确切对象?
如果你想get从集合中获取,你应该使用 Map。
(请注意,大多数 Set 实现都是 Map 的包装器)
Map<Key, Value> map = new ....
Value value = map.get(new Key(ID));
Run Code Online (Sandbox Code Playgroud)
在您的情况下,键和值可以是相同的类型,但这通常是一个坏主意,因为键(如集合的元素)应该是不可变的。
考虑使用Eclipse Collections 中的UnifiedSet类。它实现了除接口。为 put 和 get添加类似 API。比因为它不为值保留内存而只为键保留内存效率更高。PoolSetPoolMapPoolMap
UnifiedSet<Integer> pool = UnifiedSet.newSet();
Integer integer = 1;
pool.add(integer);
Assert.assertSame(integer, pool.get(new Integer(integer)));
Run Code Online (Sandbox Code Playgroud)
注意:我是 Eclipse Collections 的提交者。
| 归档时间: |
|
| 查看次数: |
908 次 |
| 最近记录: |