如何防止将同一枚举类型的不同枚举值添加到集合中?
例如,我制作了一个尺寸枚举:
public enum Size {
SMALL, MEDIUM, LARGE;
}
并将两个不同的值添加到该类型的Enum中:
public class AttributesTestDrive {
public static void main(String[] args) {
Set<Size> sizes = new TreeSet<>();
sizes.add(Size.LARGE);
sizes.add(Size.MEDIUM);
sizes.stream().forEach(System.out::println);
}
}
如何在Enum中覆盖boolean equals(Object obj)
?或者你还会做些什么来解决这个问题?
P.S。据我所知,枚举是Java中的类。
答案 0 :(得分:2)
地图而不是Set?
Map <Class,Attribute> attributes;
应该做的工作。你可以有一个尺寸:
attributes.put(Size.class, Size.LARGE);
如果你把它放到一个班级,你甚至可以在检索上做一些魔术:
public <T> T get (T defaultValue) {
if (attributes.containsKey (defaultValue.getClass ())) {
return (T) attributes.get (defaultValue.getClass ());
} else {
return defaultValue;
}
}