ArrayIndexOutofBounds从添加元素到向量矢量的异常

时间:2018-05-22 05:25:34

标签: java vector indexoutofboundsexception

我已阅读文档并查看了大量SO问题,仍然无法创建向量向量而不会遇到ArrayIndexOutofBounds异常。对于某些上下文,我正在创建一个矩阵,其中每个槽包含对边的引用,表示从源到目的地的航班。在one SO response之后,我按如下方式设置了矢量。

    Iterator<Edge> iter = array.iterator();
    private Vector<Vector<Edge>> matrix = new Vector<Vector<Edge>>(9);
    for (int i=0;i<9;i++){
        matrix.add(i,new Vector<Edge>(9));
    }

    while (iter.hasNext()) {
        Edge e = iter.next();
        int s = e.source; //row
        int d = e.destination; //col    
        Vector<Edge> row = matrix.get(s);
        int size = row.size();
        row.add(d, e); // Array Out of Bounds Exception
    }

我相信我已经初始化了我的内部和外部向量,并且不理解为什么向量的大小仍为零。在开始放置和获取元素之前,是否必须将所有元素初始化为null?我将衷心感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

new Vector<Edge>(9)创建容量为9的空Vector。因此,当add(d,e)不为0时,为Vector调用d将会{{1} }}

要使用空值初始化每一行ArrayIndexOutOfBoundsException,请使用:

Vector

答案 1 :(得分:0)

构造一个具有指定初始容量且容量增量等于零的空向量 的参数: initialCapacity向量的初始容量
抛出: java.lang.IllegalArgumentException如果指定的初始容量为负

How to change default port 9042 in Cassandra ?

I resolved issue using below steps :

1.  Stop cassandara services
sudo su -
systemctl stop datastax-agent
systemctl stop opscenterd
systemctl stop app-dse

2.  Take backup and Change port from 9042 to 9035
cp /opt/dse/resources/cassandra/conf/cassandra.yaml /opt/dse/resources/cassandra/conf/bkp_cassandra.yaml
Vi /opt/dse/resources/cassandra/conf/cassandra.yaml
native_transport_port: 9035

3.  Start Cassandra services 

systemctl start datastax-agent
systemctl start opscenterd
systemctl start app-dse

4. create cqlshrc file.

vi  /root/.cassandra/cqlshrc

[connection]
hostname = 198.168.1.100
port = 9035

Thanks,
Mahesh