java - 这两种相加方式是等价的吗?

标签 java

我目前正在准备 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));
}

这将:

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

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

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

  • 其他集合类型可能因其他原因拒绝添加。例如,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;
}

这将:

  1. 如果新创建的座位为 null,则返回 false
  2. 否则返回true

请注意,无论是否添加新座位,都会出现 true 结果。

关于java - 这两种相加方式是等价的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50662185/

相关文章:

java - 数据未保存在数据库中

java - 使用异常处理初始化接口(interface)中的静态字段

java - 使用自定义 rgb 对列的单元格进行着色,以在列中创建渐变图案,每个单元格使用 apache poi 都有自己的 rgb

java - ESelectionService 无法接收消息

java - Spring-Webservices 的快速入门工具?

java - 通过 TransportClient 在 java 中使用 Elasticsearch

java - 尝试使用 Jdbctemplate spring 执行带参数的 SELECT 语句

java - JAXB xjc 生成字段作为元素列表

java - 使用 getkey 从 firebase 数据库获取数据

java - 介意帮助第一次遇到减速带的新人吗?