Результат установлен на вложенный вектор? - PullRequest
1 голос
/ 10 января 2012

Извините, это может показаться немного базовым, но я не могу сегодня в этом разобраться. У меня есть этот вектор, и я хочу заполнить его результатами из ResultSet, который выглядит следующим образом:

column1, column2, column3, column4, column5

Vector<Vector<String>> myVector = new Vector<Vector<String>>();

           while (rs.next()) {
                            String column1 = rs.getString(1);
                            String column2 = rs.getString(2);
                            String column3 = rs.getString(3);
                            String column4 = rs.getString(4);
                            String column5 = rs.getString(5);
                            myVector.put(column1, column2, column3, column4, column5);

Это правильный способ сделать это?

ТИА

1 Ответ

3 голосов
/ 10 января 2012

http://docs.oracle.com/javase/7/docs/api/java/util/Vector.html

Vector реализует интерфейс List, поэтому он имеет add(), а не put().На самом деле, в Java нет коллекций, которые поддерживают вставку элементов с помощью varargs, поэтому вам нужно вызывать его один раз для каждой строки:

while (rs.next()) {
    Vector v = new Vector<>();
    v.add(rs.getString(1));
    v.add(rs.getString(2));
    v.add(rs.getString(3));
    v.add(rs.getString(4));
    v.add(rs.getString(5));
    myVector.add(v);
}

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

Редактировать: лучший (IMO) способ сделать это будет:

List<String[]> l = new ArrayList<>();

while (rs.next()) l.add(new String[] {
        rs.getString(1),
        rs.getString(2),
        rs.getString(3),
        rs.getString(4),
        rs.getString(5)
    });
...