Java 为什么我的向量大小是0?

Java 为什么我的向量大小是0?,java,Java,正如您在屏幕截图中所看到的,new\u意味着的容量为0,尽管我以2的初始容量创建了它,因此我得到了索引越界异常 有人知道我做错了什么吗 更新:这是代码 private static Vector<Double> get_new_mean( Tuple<Set<Vector<Double>>, Vector<Double>> cluster, Vector<Double> v, boolean

正如您在屏幕截图中所看到的,
new\u意味着
的容量为0,尽管我以2的初始容量创建了它,因此我得到了索引越界异常

有人知道我做错了什么吗

更新:这是代码

private static Vector<Double> get_new_mean(
        Tuple<Set<Vector<Double>>, Vector<Double>> cluster,
        Vector<Double> v, boolean is_being_added) {
    Vector<Double> previous_mean = cluster.y;
    int n = previous_mean.size(), set_size = cluster.x.size();
    Vector<Double> new_mean = new Vector<Double>(n);
    if (is_being_added) {
        for (int i = 0; i < n; ++i) {
            double temp = set_size * previous_mean.get(i);
            double updated_mean = (temp + v.get(i)) / (set_size + 1);
            new_mean.set(i, updated_mean);
        }
    } else {
        if (set_size > 1) {
            for (int i = 0; i < n; ++i) {
                double temp = set_size * previous_mean.get(i);
                double updated_mean = (temp - v.get(i)) / (set_size - 1);
                new_mean.set(i, updated_mean);
            }
        } else {
            new_mean = null;
        }
    }
    return new_mean;
}
private static Vector get_new_mean(
元组簇,
向量v,布尔值(正在添加){
向量先前_平均值=簇.y;
int n=previous_mean.size(),set_size=cluster.x.size();
向量new_平均值=新向量(n);
如果(正在添加){
对于(int i=0;i1){
对于(int i=0;i
容量是您可以存储的元素总数。 大小是实际存储的元素数

在您的代码中,向量中没有存储任何内容,因此当您尝试访问元素0时,会出现IndexOutOfBoundsException。

使用
set(int,object)
更改现有的元素。使用
add(int,object)
添加新的元素


这在javadoc中针对
Vector
s进行了解释
elementCount
应为0(为空),默认情况下,
capacityIncrement
为0,并且仅当您要超过指定的限制(2)时才相关。

您需要使用
null
值填充
向量
,使其大小等于容量。容量是集合的优化提示,它不会更改集合的使用情况。随着您向集合中添加元素,集合将自动增长,容量也将增加。因此,使用更大容量进行初始化将需要更少的扩展和内存分配。

请发布相关代码,而不仅仅是它的图像。两分钟后,让我们戴上眼镜看看这张显微照片。请在此处以文本形式发布代码。图像上的文本太小,无法阅读。Post code有趣的是,没有人能够阅读代码,但他们知道这是正确的答案。谢谢,好像我用了set而不是add。如果你在另一个窗口中打开图像,它是可重新设置的。@Shmoopy不幸的是,问题下拉票有时很吸引人。