gpt4 book ai didi

java - 为类的单个实例设置

转载 作者:行者123 更新时间:2023-11-29 07:16:25 24 4
gpt4 key购买 nike

我有一组 Set 对象,我不想允许在其中存储任何类的多个实例。哪种解决方案最好:

  • 检查集合中是否有给定类的实例(似乎效率不高)
  • 实现 hashCode 返回常量和 equals 返回 o != null && o.getClass() == getClass()<
  • 自己实现Set(几乎像第一个选项)
  • 还有什么吗?也许已经有了这样的一套?

最佳答案

我会使用 Map<Class<? extends T>, T>


示例实现:

class SingleInstanceSet<T> {

Map<Class<? extends T>, T> map = new HashMap<Class<? extends T>, T>();

public boolean add(T o) {

if (map.containsKey(o.getClass()))
return false;

map.put((Class<? extends T>) o.getClass(), o);
return true;
}

public T get(Class<? extends T> klass) {
return map.get(klass);
}
}

示例用法:

public static void main(String[] args) {
ClassSet<Object> instances = new ClassSet<Object>();

instances.add("hello");
instances.add(1234);
instances.add("will not be added");

System.out.println(instances.map);
}

输出类似:

{class java.lang.String=hello, class java.lang.Integer=1234}

关于java - 为类的单个实例设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9278611/

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