我目前正在填写Java考试,我想知道以下两种方法是否会产生与null检查相同的结果?如果没有,为什么?
座位是一个集合,
public boolean addSeating(Group group) {
//return seatings.add(createSeating(group));
Seating seating = createSeating(group);
if (seating != null){
seatings.add(seating);
return true;
}
return false;
答案 0 :(得分:2)
这两种方法给出了不同的结果。
public boolean addSeating(Group group) {
return seatings.add(createSeating(group));
}
这将:
true
false
醇>
请注意,如果seatings
是List
或Set
或其他类型的集合,我们知道:
如果seatings
是Set
,那么add
将在添加的元素已经在集合中的情况下返回false
。 (或者更准确地说,如果等于并且元素已经在集合中。)
其他集合类型可能因其他原因拒绝add
。例如,List
类可以拒绝添加null
或类型错误的元素,或者如果列表是“完整”的话,它可以拒绝添加......在某种意义上。 / p>
(如果seatings
为ArrayList
,则add
将始终成功,因此结果将始终为true
。)
public boolean addSeating(Group group) {
Seating seating = createSeating(group);
if (seating != null){
seatings.add(seating);
return true;
}
return false;
}
这将:
false
,则null
true
请注意true
结果无论是否添加了新座位。