Java - ArrayList默认初始值

时间:2013-03-01 16:44:36

标签: java arraylist integer default

在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中的实际大小或元素数量吗? 在执行此操作以创建最大大小时,默认值为null?

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 :(得分:5)

声明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个元素,除非你像我上面那样限制它。

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:1)

没有“完整”ArrayList之类的东西。 size()方法将返回当前保存的元素数。

答案 4 :(得分: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
}

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

答案 5 :(得分:1)

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

答案 6 :(得分:0)

ArrayLists没有默认值。如果在初始化时给ArrayList一个initialCapacity,你只是给出了底层数组大小的提示 - 但是在你自己添加项之前,你实际上无法访问ArrayList中的值。 p>

答案 7 :(得分:0)

任何List实现都可以使用isEmpty()方法。