看一下这个:
public class Main {
private static List<Integer> list = new ArrayList<>();
public static void add(int x) {
if(list.contains(x)) {
return;
}
list.add(x);
}
public static void main() {
list.add(1);
list.add(1); //should it do nothing or throw an error?
}
}
此外,请忽略我本可以使用
Set<Integer>
,这样就不需要使用if(list.contains(x))
了。无论如何,假设
list
不具有重复项,并且还假设如果意外添加了重复项(例如:第二个list.add(1)
),则应视为错误; 如果没有必要添加重复项,我就不想添加。关键是:是否应该改为抛出异常(例如
IllegalArgumentException
)而不是使用add(int x)
? 我明白,如果我不这样做,我就不用担心它会在实际存在重复的情况下引起错误,因为它在第二次添加时只会保持原状,但是有点困扰的是,在某个时间点上可能会调用一个不必要的add()
。我曾经看到过类似于
add(int x)
的代码,检查某些内容,然后基于那些内容什么都不做。希望您可以将此思想应用于您之前遇到的问题。无论如何,我甚至不知道。以后是否应像上面那样继续,或者应该抛出异常?