是否有任何集合,如果添加的项目不是唯一的,则抛出异常?
输入异常消息或特殊异常。
答案 0 :(得分:3)
Java
中没有这样的集合。但是,第三方库可能包含此类集合。在Java中,Set
和HashSet
之类的TreeSet
实现会阻止添加重复的对象。但是,如果您尝试添加重复的对象,它们不会抛出异常。如果对象已存在于集合中,则他们的add
方法只返回false
。如果它不是您想要的,您可以扩展其中一个类并重写add方法并抛出异常。像这样:
import java.util.HashSet;
public class MySet<E> extends HashSet<E> {
@Override
public boolean add(E e) {
if(!super.add(e))
throw new RuntimeException("The object already exists in the collection.");
return true;
}
}
答案 1 :(得分:2)
我不知道会有任何收藏品。
简单的自制版本是创建java.util.HashSet<E>
在该类中,您提供每个构造函数并覆盖Set.add
如果super.add(e)
返回false,则抛出异常。 (请参阅Mehdi Javan 第一个实施的答案)
如果您希望能够使用任何Set
,只需使用一种方法为您接受Set
。
public void addIfAbsent(Set<E> set, E e) throws TheException {
if(!set.add(e)) {//throw exception }
}
由于我们在这里,您可以使其适用于任何Collection
...
public void addIfAbsent(Collection<E> set, E e) throws TheException {
if(c.contains(e)) { //throw exception }
c.add(e);
}