为什么这段代码输出"0"?

1 java arraylist

package Algorithms;
import cs1.Keyboard;
import java.util.*;

public class SieveofEratosthenes2 {
    public static void main (String[] args){

        //input number and create an array with the length of (num-1)
        int num = Keyboard.readInt();
        ArrayList prime = new ArrayList(num);

        //populate array with all numbers from 2 to num
        for(int i = 0; i < prime.size()-1; i++)
        {
            Integer temp = new Integer(i+2);
            prime.add(i, temp);
        }
        System.out.println(prime.size());
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 7

这里的构造函数没有设置ArrayList 的大小num,它将容量设置为num:

ArrayList prime = new ArrayList(num);
Run Code Online (Sandbox Code Playgroud)

ArrayList的大小仍为零,因此循环体永远不会运行.试试这个:

for (int i = 0; i < num - 1; i++)
{
    Integer temp = new Integer(i+2);
    prime.add(temp);
}
Run Code Online (Sandbox Code Playgroud)

尺寸定义:

此列表中的元素数量.

能力的定义:

每个ArrayList实例都有一个容量.容量是用于存储列表中元素的数组的大小.它始终至少与列表大小一样大.当元素添加到ArrayList时,其容量会自动增加.除了添加元素具有恒定的摊销时间成本这一事实之外,未指定增长策略的详细信息.