int [] [] convert --to -> Vector <Vector <Double>> - PullRequest
1 голос
/ 04 декабря 2011

Я хотел бы преобразовать integer [] [] в Vector<Vector<Double>>.После долгих чтений кажется, что никто не оставил в Интернете сообщение для поиска чего-то подобного.множество int вектора для удвоения вектора, arraylist to vector и т. д. К сожалению, я не нашел то, что искал.Итак ... Кто-нибудь из вас знает подходящий метод для этого?Я думал о преобразовании моего int[][] в строки, а затем преобразовать это в vector<vector<Double>>.Мнения?Будет ли что-то подобное полезным, т.е.преобразование моего массива в массив объектов

Object[] a1d = { "Hello World", new Date(), Calendar.getInstance(), };
// Arrays.asList(Object[]) --> List
List l = Arrays.asList(a1d);

// Vector contstructor takes Collection
// List is a subclass of Collection
Vector v;
v = new Vector(l);

// Or, more simply:
v = new Vector(Arrays.asList(a1d));

В противном случае, не могли бы вы дать мне лучший пример, который может иметь меньше шагов?Еще раз спасибо за букет.

Ответы [ 3 ]

2 голосов
/ 04 декабря 2011

Прежде всего: избегайте Vector, оно устарело;используйте ArrayList вместо этого (или что-то похожее). Подробнее читайте здесь

Во-вторых, если бы мне пришлось конвертировать 2d-массив в список списков, я бы сделал это очень просто:

List<List<Double>> list = new ArrayList<ArrayList<Double>>();
for(int i=0; i<100; i++) //100 or whatever the size is..
{
        List<Double> tmp = new ArrayList<Double>();
        tmp = Arrays.asList( ... );
        list.add( tmp );
}

НадеюсьЯ правильно понял вашу проблему.

1 голос
/ 04 декабря 2011

Vector - это старый класс, который не устарел, но больше не должен использоваться.Вместо этого используйте ArrayList.

Вы должны использовать интерфейс LIst, а не конкретный класс Vector.Программа на интерфейсах, а не на реализациях.

Более того, повторяющиеся преобразования, подобные этим, показывают отсутствие дизайна.Инкапсулируйте ваши данные в пригодные для использования объекты, которые не нуждаются в преобразовании каждый раз, когда вам нужна новая функциональность.

Если вам действительно нужно это сделать: используйте циклы:

int[][] array = ...;
List<List<Double>> outer = new Vector<List<Double>>();
for (int[] row : array) {
    List<Double> inner = new Vector<Double>();
    for (int i : row) {
        inner.add(Double.valueOf(i));
    }
    outer.add(inner);
}

Преобразование из int вSTring, а затем из String в Double расточительны.

0 голосов
/ 04 декабря 2011

Вектор одномерный.Вы можете иметь вектор векторов для имитации 2D-массива:

    Vector v = new Vector();
    for (int i = 0; i < 100; i++) {
        v.add(new Vector());
    }

    //add something to a Vector
     ((Vector) v.get(50)).add("Hello, world!");

    //get it again
    String str = (String) ((Vector) v.get(50)).get(0);

Примечание. Вектор - это старая коллекция, которую не рекомендуется использовать

...