这两种添加方式是否相同?

时间:2018-06-03 00:02:39

标签: java

我目前正在填写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;

1 个答案:

答案 0 :(得分:2)

这两种方法给出了不同的结果。

第1版。

public boolean addSeating(Group group) {
    return seatings.add(createSeating(group));
}

这将:

  1. 如果新创建的座位已添加到集合
  2. ,则返回true
  3. 如果新创建的座位未添加到集合
  4. ,则返回false

    请注意,如果seatingsListSet或其他类型的集合,我们知道

    • 如果seatingsSet,那么add将在添加的元素已经在集合中的情况下返回false。 (或者更准确地说,如果等于并且元素已经在集合中。)

    • 其他集合类型可能因其他原因拒绝add。例如,List类可以拒绝添加null或类型错误的元素,或者如果列表是“完整”的话,它可以拒绝添加......在某种意义上。 / p>

    (如果seatingsArrayList,则add将始终成功,因此结果将始终为true。)

    第2版。

    public boolean addSeating(Group group) {
        Seating seating = createSeating(group);
        if (seating != null){
            seatings.add(seating);
            return true;
        }
        return false;
    }
    

    这将:

      如果新创建的座位为false ,则
    1. 返回null
    2. 否则返回true
    3. 请注意true结果无论是否添加了新座位。