2016-03-13 2 views
-5

Я использовал для написания C++, как этот vectorV [размер] или вектор> , но я не знаю, как записать его в java. Я попытался написать, как этот Vector> x = new Vector> (size), но когда я хочу использовать его как этот x.get (index) .add (новый объект), у него будет исключение ArrayIndexOutOfBoundsEx. Как я могу его решить , помогите мне плз, тх.Как написать вектор в векторе в java

+1

Пожалуйста, покажите больше своего нерабочего кода. Это поможет, если мы сможем полностью понять, что вы можете делать неправильно. –

+0

Вы * вероятно * не хотите 'Вектор', потому что он сломан и мусор. Используйте 'ArrayList' – Idos

+0

@Idos Не могли бы вы объяснить, что такое« сломанный и мусор »о« Вектор »? –

ответ

1

Дело в том, что вы можете выделить вектор C++, изначально содержащий экземпляры size, где эти элементы являются пустыми векторами.

auto vectorOfVectors = vector<vector<T>>(10); 
cout << vectorOfVectors.size() << endl; // Outputs 10. 

Вы не то же самое с Java Vector. Даже если вы построите его с параметром capacity, все, что вы делаете, запрашивает пробел для того, чтобы многие элементы были зарезервированы в векторе. Размер вектора изначально равен нулю (если вы не вызываете конструктор Vector(Collection<? extends E>) с непустой коллекцией в качестве параметра).

Vector<Vector<T>> vectorOfVectors = new Vector<>(10); 
System.out.println(vectorOfVectors.size()); // Outputs 0. 

Если вы хотите выделить вектор с элементами size, что вам нужно сделать это явно:

Vector<Vector<T>> vectorOfVectors = new Vector<>(size); 
for (int i = 0; i < size; ++i) { 
    vectorOfVectors.add(new Vector<T>()); 
} 

Однако Vector является сильно устаревшим классом. Вероятно, вы захотите использовать ArrayList (точно так же).

+0

да! Действительно много! – lxhsb

0

Если я получу вас правильно, вам нужен вложенный вектор. Вместо этого вы можете использовать вложенные ArrayList в Java.

ArrayList<ArrayList<Object>> arrayList = new ArrayList<ArrayList<Object>>(); 
ArrayList<ArrayList<Object>> al1 = new ArrayList<ArrayList<Object>>(); 
ArrayList<ArrayList<Object>> al2 = new ArrayList<ArrayList<Object>>(); 
arrayList.add(al1); 
arrayList.add(al2); 
arrayList.get(0).add(new Object()); // retrieves al1 

Сообщите мне, если вам нужно уточнение.

+0

thx много. записывайте вектор в вектор так же! – lxhsb