【问题标题】:How to add values to Double[] arraylist [duplicate]如何将值添加到 Double [] arraylist [重复]
【发布时间】:2017-06-10 17:28:35
【问题描述】:

我创建了这个数组列表:

Double[] arrayOfNumbers = new Double[List.size()];

我尝试用这个添加数字:

arrayOfNumbers.add(0.9);

这给了我一条错误消息:

无法在数组类型 Double[] 上调用 add(double)

那么,如何在这个 Double[] 数组列表中添加该值?

【问题讨论】:

    标签: java arrays arraylist collections


    【解决方案1】:

    这不是ArrayList。那是一个数组。

    您可以将双精度数组列表声明为:

    int initialCapacity = 20;
    List<Double> doubles = new ArrayList<Double>(initialCapacity);
    doubles.add(0.9);
    

    即使初始容量指定为20,您也可以在ArrayList 中添加多个20 值。

    但是要声明一个数组并填充它:

    double[] doublesArray = new doubles[20];
    
    doubles[0] = 0.9;
    doubles[1] = 0.5;
    .....
    doubles[19] = 0.7; // 19 is the last index for an array of size 20.
    

    如果你在这里添加超过20,你会得到ArrayIndexOutOfBoundsException

    【讨论】:

    • 在您的 ArrayList 示例中,我认为您将数组 size 与其 capacity 混淆了。肯定有相关的,但不是一回事;)
    • @PauloMattos 我将 size 这个词修改为 initial capacity 以消除混淆。
    【解决方案2】:

    Double[] 不是 ArrayList 添加到您可以使用的数组中:

    Double[] arrayOfNumbers = new Double[List.size()];
    arrayOfNumbers[0] = 0.9;
    

    您可以使用 ArrayList 代替添加:

    List<Double> arrayOfNumbers = new ArrayList<>();
    arrayOfNumbers.add(0.9);
    

    【讨论】:

      【解决方案3】:

      数组和列表是不同的东西。数组没有 add 方法,但可以通过下标 ([]) 运算符赋值:

      arrayOfNumbers[0] = 0.9;
      

      【讨论】:

        【解决方案4】:

        Double[] arrayOfNumbers = new Double[List.size()] 不是列表 它是一个数组。 我们用 [] 声明数组,用 和泛型声明列表。 例如`

        int[]arr=new int[3] 是一个由 3 个整数组成的数组,但 List&lt;Integer&gt;list=new ArrayList&lt;&gt;() 是一个整数列表(不是原始整数,你不能像 List&lt;int&gt;=new ArrayList&lt;&gt;() 这样编写代码

        Hope that helps!
        

        【讨论】:

          【解决方案5】:

          java.util.Listarray 不同(predefined size 有限)。

          你不能像上面所说的那样声明/执行,如果你这样做,java编译器会抱怨。

          您正在逐步解决类似的错误,

          无法在数组类型 Double[] 上调用 add(double)

          因为数组(arrayOfNumbers) 没有可以在arrayOfNumbers 上执行的方法(add)。

          然而, 初始化任何类型的数组的一般语法(此处为整数,仅供参考)也是如此,

          int intArray[] = {1,2,3}; // initialize at the time of creation
          or
          int arrayOfNumbers [] = new int[] {1, 2, 3};
          or
          intArray[index] = 1;
          

          此外,您可以从array 切换到List,反之亦然,

          List<Integer> list = java.util.Arrays.asList(arrayOfNumbers);
          

          Integer [] intArray = list.toArray(new Integer[list.size()]);
          

          【讨论】:

            【解决方案6】:

            List 是一个Interface,它扩展了另一个名为Collection 的接口,所以List 是一个CollectionInterface 定义和描述行为,它定义了另一个类必须遵守的契约,其中一个类称为 java.util.ArrayListadd() 是在 List 契约中定义的一种行为,因为列表必须能够将事物添加到其中。 ArrayList 是List 的一种类型。您创建的不是 ArrayList,而是 Array。

            数组是一种原始数据结构,一旦创建,它的大小就无法改变到新的。在幕后ArrayList 正是这样做的。这就是您创建 ArrayList 的方式:

            //a list of Objects of type `Double`
            List<Double> listOfNumbers = new ArrayList<>();
            

            如果你想在这个列表中添加一个元素,你可以这样做:

            listOfNumbers.add(5.2);
            

            您似乎仍然需要阅读一本初学者书籍并练习基本的 Java 编程。我想建议这个playlist

            这对你真的很有帮助,记住你只能通过动手来学习一些东西,而不是仅仅看着别人这样做。

            【讨论】:

              猜你喜欢
              • 2023-04-06
              • 2018-08-19
              • 2012-12-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-10-22
              • 1970-01-01
              • 2016-08-10
              相关资源
              最近更新 更多