用Java设置实例?

Jér*_*nge 6 java object set instance

Java定义了一个Set接口,contains()其定义如下:

true如果此set包含指定的元素,则返回.更正式地说,当且仅当此set包含的元素返回true e 这样(o==null ? e==null : o.equals(e)).

Collection接口定义contains()如下:

true如果此collection包含指定的元素,则返回.更正式地说,当且仅当此集合包含至少一个e这样的元素时才返回true (o==null ? e==null : o.equals(e)).

我需要一个基于Java 而不是contains()基于Java的实例集.换句话说,一组硬实例,其中两个不同的对象A和B 可以在同一组中共存,因为.==equals()A.equals(B)A!=B

这样的'实例集'是用Java还是在一些公共库中提供的?我找不到任何东西,但可能有人知道更好.如果没有,我会实施它.谢谢.

Joa*_*uer 13

JRE中没有直接的"实例集".

但是有一个IdentityHashMap根据你的术语实现"实例图".

并且有一种方法Collections.newSetFromMap()可以Set从任意Map实现创建一个方法.

因此,您可以轻松地构建自己的实例集,如下所示:

Set<MyType> instanceSet = Collections.newSetFromMap(new IdentityHashMap<MyType,Boolean>());
Run Code Online (Sandbox Code Playgroud)

  • @rich在应用程序中,我使用identity来检测对象的更改.某个上下文中的对象是不可变的,因此当需要更改时,会创建一个新的Object.当旧对象和新对象"相等"时,某个系统会将其检测为新的,因为它不在之前的集合中. (2认同)