我目前正在为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


请注意,我们不知道seatingsList还是Set或其他某种类型的集合:


如果seatingsSet,则在要添加的元素已经在集合中的情况下,add将返回false。 (或更确切地说,如果它等于set中的和,则更精确。)
其他收集类型可能由于其他原因拒绝add。例如,一个List类可以拒绝添加null或类型错误的元素,或者在某种意义上说,如果列表为“满”,它可以拒绝添加。


(如果seatingsArrayList,则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/

10-10 07:15