首页 文章

Java - ArrayList默认初始值

提问于
浏览
0

在Java中创建Integer类型的arraylist时,默认值是什么?我需要检查arraylist是否已满并且我将获得数组的大小然后获取最后一个索引的值并检查它是否是默认值 .

有没有更好的办法?什么是默认值?

希望有道理 . 干杯

int size = a.size();
int last = a.get(size);
if( last == null )
{
    return true;
}else{
    return false;
}

编辑;

是否有可能创建一个具有最大大小的ArrayList,以阻止它动态扩展?当你创建一个ArrayList并使用size()时会返回实际大小或arraylist中的元素数量吗?当这样做以创建最大尺寸时,默认值是否为空?

public boolean isFull()
{
    int size = a.size();
    int last = 0;
    try{
        last = a.get(size-1);
    }catch (Exception e){
    }
    if( last == null )
    {
        return true;
    }else{
        return false;
    }
}

我目前有这个,它看起来怎么样?这现在有意义吗?

8 回答

  • 0

    声明ArrayList时它是空的 . 它也是一个动态容器,意味着它会增长,因此您可以询问它是否“满”更多是您需要添加到代码中的约束 .

    所以,如果你想实现像你描述的目标 .

    List<Integer> list = new ArrayList<Integer>();
    int MAX_ELEMENTS = 5; //Set this to however you want to constrain the datatype
    
    public boolean addElement(Integer value) {
       if (list.size() < MAX_ELEMENTS) {
         list.add(value);
         return true;
       } else {
         return false;
       }
    }
    
    public boolean isFull() {
      return (list.size() == MAX_ELEMENTS);
    }
    
    public Integer getLast() {
      if (!list.isEmpty())
        return list.get(list.size()-1);
      else
        return null;
    }
    

    正如其他人所说,如果你生成一个预设大小的列表:

    List<Integer> list = new ArrayList<Integer>(10);
    

    你有一个包含大量10个元素的列表,它们的值都是 null . 如果你添加额外的元素,列表仍然会大于10个元素,除非你像我上面那样限制它 .

  • 2

    如果您尚未将 Integer 添加到ArrayList,则列表中的任何 get() 将返回 IndexOutOfBoundsException .

    size() 方法返回列表中的元素数(即您添加了多少元素),而不是当前容量 .

  • 1

    在ArrayList类中创建ArrayList时,会有一个元素数组 . 这些元素设置为null,因为它们不引用Integer对象的任何实例 . 请记住,这与int不同 .

    而且,ArrayList没有完整 . 它是动态的,并且在需要时会增加尺寸 .

    编辑:响应您关于设置最大尺寸的编辑,如果您想要最大尺寸,那么我不确定您为什么需要一个arraylist . 但是如果你想坚持使用ArrayList类,我会创建自己的类,它是arraylist的子类,并使用check来覆盖add方法,以确保size()的值不超过固定量 .

  • 0

    没有像"full" ArrayList 这样的东西 . size() 方法将返回当前保存的元素数 .

  • 1

    您是否只想将列表限制为给定大小,还是要检查它是否大于给定大小?

    检查列表是否大于:

    if (list.size() > limit)
        System.out.println("List too large");
    

    它不可能约束ArrayList的大小 - 但是你可以创建自己的ArrayList子类来做到这一点:

    public class LimitedList<E> extends ArrayList<E> {
    
         private int limit;
    
         public LimitedList(int limit) {
             this.limit = limit;
         }
    
         public boolean add(E e) {
             // only add if the limit is not exceeded
             if (size() < limit)
                 super.add(e);
         }
    
         // overwriting the addAll()-methods is left as an excercise to the reader
    }
    

    当一个人尝试添加超出限制允许的元素时,您只需要决定列表应该做什么 . 要么只是忽略元素,要么抛出异常 .

  • 1

    默认情况下,ArrayList容量为10.默认情况下,所有这些都是null,直到您将元素添加到其中 . 但调用size()将为您提供已添加的元素数 . 它不会给出10作为结果(不会考虑默认的空值) . 这里扭转的是如果向列表中添加空值,则在计算size()时会包含它们 . 例如,如果在列表中添加3个有效的Integers和2个null值,那么size()将返回5. Eclipse调试将帮助您找到其动态增加的容量 .

  • 3

    ArrayLists没有默认值 . 如果在初始化时给ArrayList a initialCapacity ,则实际访问ArrayList中的值,直到您自己添加项目为止 .

  • 5

    任何List实现都有一个可以使用的isEmpty()方法 .

相关问题