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不幸的是,问题下拉票有时很吸引人。