我目前正在为Java考试做准备,我想知道以下两种方法是否可以得到除空检查以外的相同结果?如果没有,为什么?
座位是一个集合,
public boolean addSeating(Group group) {
//return seatings.add(createSeating(group));
Seating seating = createSeating(group);
if (seating != null){
seatings.add(seating);
return true;
}
return false;
最佳答案
两种方法给出不同的结果。
版本1。
public boolean addSeating(Group group) {
return seatings.add(createSeating(group));
}
这将:
如果新创建的座位已添加到集合中,则返回
true
如果未将新创建的座位添加到集合中,则返回
false
请注意,我们不知道
seatings
是List
还是Set
或其他某种类型的集合:如果
seatings
是Set
,则在要添加的元素已经在集合中的情况下,add
将返回false
。 (或更确切地说,如果它等于set中的和,则更精确。)其他收集类型可能由于其他原因拒绝
add
。例如,一个List
类可以拒绝添加null
或类型错误的元素,或者在某种意义上说,如果列表为“满”,它可以拒绝添加。(如果
seatings
为ArrayList
,则add
将始终成功,因此结果将始终为true
。)版本2。
public boolean addSeating(Group group) {
Seating seating = createSeating(group);
if (seating != null){
seatings.add(seating);
return true;
}
return false;
}
这将:
如果新创建的座位为
false
,则返回null
否则返回
true
请注意,无论是否添加了新的座位,都会出现
true
结果。关于java - 这两种加法是否等效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50662185/