int [] [] convert --to--> Vector<Vector<Double>>

末鹿安然 提交于 2019-12-11 05:15:41

问题


I would like to convert an integer [] [] to a Vector<Vector<Double>>. After much reading, it seems no one has left a searchable post on the web for something of this nature. plenty of int vector to double vector, arraylist to vector, etc. Sadly I haven't found what i am looking for. So..Do any of you folks know an appropriate method for this? I was thinking of converting my int[][] to strings then convert that to vector<vector<Double>>. Opinions? Would something like this be useful, ie. converting my array to object array

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));

Otherwise could you give me a better example that may have less steps? Thanks a Bunch again.


回答1:


Vector is an old class that is not deprecated but shouldn't be used anymore. Use ArrayList instead.

You should use the LIst interface rather than using the concrete Vector class. Program on interfaces, not on implementations.

Moreover, having repeating conversions like this shows a lack of design. Encapsulate your data into usable objects that don't need conversion each time you need a new functionality.

If you really need to do this: use loops:

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);
}

Transforming from int to STring and then from String to Double is wasteful.




回答2:


First of all: avoid Vector, it is obsolete; use ArrayList instead (or something simmilar). Read more here

Secondly, if I had to convert a 2d array to a list of lists, I'd keep it very simple:

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 );
}

I hope I understood your problem right.




回答3:


A Vector is one dimensional. You could have a Vector of Vectors to simulate a 2D array:

    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);

Note: Vector is an old collection that is not recommended to be used



来源:https://stackoverflow.com/questions/8375420/int-convert-to-vectorvectordouble

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!