Java新手求助:如何将两个ArrayList坐标数组转为二维数组
Hey there! I see you're making the jump from Python to Java and hitting a snag with combining your coordinate lists—let's get this sorted out.
The issue with your original approach is that x_loc is an ArrayList<Double>, but your data_fin is set up to hold Double[] (double arrays). You can't directly add an entire ArrayList into a collection that expects arrays; instead, you need to pair up each x and y value one by one.
Here's a straightforward way to do it:
Step 1: Validate Input Lengths
First, make sure your two coordinate lists are the same length to avoid index out-of-bounds errors. It's a good practice to add a check for this.
Step 2: Pair Coordinates and Build the 2D List
Loop through each index, create a small 2-element array for each (x, y) pair, and add that array to your final list.
// Your original coordinate lists ArrayList<Double> x_loc = new ArrayList<>(); ArrayList<Double> y_loc = new ArrayList<>(); // Populate your lists with values (example) x_loc.add(1.5); x_loc.add(3.2); y_loc.add(4.7); y_loc.add(6.1); // Initialize your final 2D list ArrayList<Double[]> data_fin = new ArrayList<>(); // Check if both lists have the same number of elements if (x_loc.size() != y_loc.size()) { throw new IllegalArgumentException("x_loc and y_loc must contain the same number of coordinates!"); } // Loop through each index to pair x and y values for (int i = 0; i < x_loc.size(); i++) { Double[] coordinatePair = new Double[2]; coordinatePair[0] = x_loc.get(i); coordinatePair[1] = y_loc.get(i); data_fin.add(coordinatePair); }
Bonus: Convert to a Java 2D Array
If you need a proper Double[][] (instead of an ArrayList<Double[]>) to match Python's array structure more closely, you can convert it like this:
Double[][] final2DArray = data_fin.toArray(new Double[data_fin.size()][]);
Or you can build the 2D array directly without using an ArrayList first:
Double[][] final2DArray = new Double[x_loc.size()][2]; for (int i = 0; i < x_loc.size(); i++) { final2DArray[i][0] = x_loc.get(i); final2DArray[i][1] = y_loc.get(i); }
Either way, you'll end up with a structure that mirrors the array([[x1,y1],[x2,y2],...]) you're used to in Python.
内容的提问来源于stack exchange,提问作者J.Doe

