【问题标题】:Boolean Method for ArrayListArrayList 的布尔方法
【发布时间】:2015-11-10 12:40:59
【问题描述】:

我创建了一个ArrayList,并希望使用boolean 方法向ArrayList 添加一个元素。

private static Arraylist <Bicycle> bikelist = new Arraylist<Bicycle>();

public boolean add(Bicycle bicycle)
{
    if( bikelist.size() != -1)
        return true;
    bikelist.add(bicycle);
}

return false;

这合理吗?我不太确定布尔方法是如何工作的?它们是否必须包含if 语句才能返回truefalse

【问题讨论】:

  • 格式化您的代码后,它看起来真的很奇怪。你有没有注意到return false; 在方法之外?为什么将列表大小与-1 进行比较?绝不是-1

标签: methods arraylist boolean


【解决方案1】:

使用:public boolean add(Object obj):将元素 obj 添加到 Arraylist。如果元素添加成功,该方法返回true

【讨论】:

    【解决方案2】:

    取决于您要返回布尔值的目的。

    add 操作是否成功:将Object 添加到ArrayList 失败的唯一原因是OutOfMemoryException AFAIK。然后你会这样做:

    public boolean add(Object obj) {
        try {
            list.add(obj);
        } catch (OutOfMemoryException e) {
            return false;
        } 
        return true;
     }
    

    如果你想返回false如果列表已经包含对象,那么:

    public boolean add(Object obj) {
        if (list.contains(obj)) {
            return false;
        }
        list.add(obj);
        return true;
     }
    

    注意ArrayList&lt;T&gt;.contains(T) 使用Object.equals(Object) 检查对象是否相等。因此,您需要为您的自定义类覆盖 equals()

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Bicycle other = (Bicycle) obj;
        if (other.owner != this.owner) {
            return false;
        }
        if (this.model != other.model) {
            return false;
        }
        return true;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 2016-01-26
      • 2013-03-05
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 2012-04-12
      相关资源
      最近更新 更多