看看这个:
public class Main {
private static List 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.add(1)),都应视为错误;如果不需要,我不想添加重复项.
底线是这样的:add(int x)是否应该抛出异常(例如IllegalArgumentException之类的东西)?我知道,如果我不这样做,我就不必担心它会导致涉及重复的实际错误,因为它在第二个添加项上什么都不会做,但是仍然让我有些烦恼,在某些时候,不必要的添加项()可以被调用.
我已经看到类似于add(int x)的代码,该代码可以检查某些内容,并且仅基于该内容不执行任何操作.希望您可以将此想法应用到之前完成的工作中.
无论如何,我什至都不知道.在以后的类似问题中,还是应该继续上述操作,还是应该抛出异常?