java - IndexOutOfBoundException 使用 java.util.Vector

标签 java arrays dynamic vector indexoutofboundsexception

我在使用 java.util.Vector 时遇到问题和 java.util.ArrayList. 我知道 vector 中将保存多少元素的容量或更好。所以我初始化了一个 java.util.List使用它利用构造函数的实现 new Vector<?>(int capacity) .

List初始化后,我使用了方法set(index, value)但是这个调用的结果是 IndexOutOfBoundException .这非常令人困惑,因为我使用构造函数将容量设置为给定值。

以下代码片段显示了问题:

  public void calculateSimple(List<Stock> values, int n) {

    if (n<=0) {
        throw new IllegalArgumentException("N must not be zero or negativ");
    }       

    int max = values.size();

    result = new Vector<Double>(max);

    System.out.println("Size of result "+result.size());

    if (max == 0) {
        result.add(0.0);
    }

    if (max <= n) {
        n = max;
    }

    for (int i = 1; i <= n; i++) {          
        List<Double> subList = values.subList(max-i-n, max-i);
        result.set(result.size()-i, calculateSimpleValue(subList, n));
    }   
}

我知道我可以使用简单的数组来解决这个问题。我想问一下代码中是否有任何错误,或者我对容量构造函数有一些错误的想象,关于类 Vector或任何其他 List实现。

更新

问题是: 是否可以以混合方式使用任何类型的 java.util 数据结构 (数组、动态列表(或任何其他))

最佳答案

如果你想创建一个用一些值初始化的列表,比如 0.0 或空值,这里有一个快速的方法:

ArrayList<Double> list = new ArrayList<>(Collections.nCopies(100, value));

关于java - IndexOutOfBoundException 使用 java.util.Vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30044439/

相关文章:

java - 使用 JOOQ 执行 Firebird 存储过程

java - 根据按钮单击初始化表格列

javascript:如果数组中的值在另一个数组中,则只删除一次该值

javascript - 使用javascript的动态字典

java - Rjava 包安装在 docker 中卡住

java - 从小部件类连接到数据库

Java访问字符串数组中的特定元素

php - 展平多维数组的函数无法按预期工作

python - 动态模块创建

plugins - CKEditor 3.x - 将 UI 元素动态添加到插件对话框