2009-07-10 39 views
21

Tôi biết rằng mảng 2d là mảng mảng. Để có một hàng bạn có thể làm:Cách lấy cột từ một mảng java 2D?

rowArray = my2Darray[row] 

Vì mỗi hàng có thể có kích thước khác nhau, tôi giả sử nó không được tích hợp để lấy cột từ một mảng 2D. Nó dẫn tôi tin rằng bạn sẽ phải làm một cái gì đó như:

for(int row = 0; row < numRows; row++) 
{ 
    colArray[row] = m2Darray[row][columnOfInterest]; 
} 

Đây có phải là đúng? Đó là cách duy nhất?

+1

Ý của bạn là 'colArray [ row] = m2Darray [hàng] [columnOfInterest]; '? – ChssPly76

+0

có cảm ơn bạn :) – Derrick

Trả lời

8

Nếu bạn bị khóa xuống bằng cách sử dụng mảng 2d, thì có, điều này là nó afaik. Tuy nhiên, đề xuất có thể giúp bạn (nếu có thể):

Quấn mảng trong lớp xử lý tìm nạp cột.

Chúc may mắn.

2

Cách của bạn là con đường để đi. Tuy nhiên, nếu bạn phải làm điều đó nhiều lần, tôi có thể đề nghị lưu trữ nó trong cột. (Hoặc cả hai cách)

7

Commons toán có một số công cụ bạn có thể muốn kiểm tra:

double[][] data = new double[10][10]; 
BigMatrix matrix = MatrixUtils.createBigMatrix(data); 
matrix.getColumnAsDoubleArray(0); 

Commons Math Library

1

Vâng thực sự tôi muốn viết những dòng này như một lời nhận xét, nhưng danh tiếng của tôi vẫn là thấp, vì vậy tôi phải trả lời:

Đoán bạn có nghĩa là:

for(int row = 0; row < numRows; row++) 
{ 
    colArray[row] = m2Darray[row][columnOfInterest]; 
} 

BTW: Tôi cho rằng bạn đúng. Không có cách nào dễ dàng hơn.

0

Một cách khác là lưu trữ các hàng dưới dạng cột và ngược lại. ví dụ. Tôi cần phải làm chính xác điều tương tự và ban đầu tôi dự định có một mảng với 10 hàng và 2 cột. Vì giới hạn này, tôi chỉ đổi chỗ các hàng và cột của mình và tạo một mảng với 10 cột và 2 hàng. Sau đó, tôi có thể sử dụng mảng [0] để lấy hàng từ mảng mới (mà sẽ là một cột của mảng ban đầu của tôi). Tất nhiên bạn có sự linh hoạt này chỉ khi bạn là người tạo ra mảng đó.

Hy vọng rằng sẽ giúp ...

2
int[][] array = new int[rows][coloumn]; 

for (int i = 0 ; i < array.length ; i++) { 
    for (int j = 0 ; j < array[].length; j++) { 
     int col = array[j][i]; 
    } 
} 
-4

thử này

int column = 3; 
double result = array[][column]; 

Good Luck

1

Trên thực tế phiên bản mới nhất của Apache Commons (3.5) không có lớp BigMatrix. Thay vì điều này chúng ta có thể sử dụng RealMatrix

double[][] data = new double[10][10]; 
RealMatrix rm = new Array2DRowRealMatrix(data); 
rm.getColumn(i); 
-2

Chỉ cần đi qua bài viết này một cách tình cờ. Một cách khác để thực hiện các hoạt động như sao chép mảng hoặc thao tác trên các mảng cột là chuyển đổi mảng/ma trận của bạn.

Ngay nói

  • a. chuyển đổi 2Darray/ma trận (tức là6x5 ==> 5x6 2Darray)
  • Thực hiện các thao tác trên các mảng cột
  • chuyển tiếp lại ==> quay lại 2Darray gốc của bạn.

Cách tiếp cận này đã được sử dụng trong đường may khắc - hình ảnh kỹ thuật cắt xén

-1

Bạn phải sử dụng lớp StringBuilder để nối thêm nhân vật mới ở phần cuối của một chuỗi

StringBuilder s=new StringBuilder(); 
    for(int i=0;i<n;i++) 
     s.append(arr[i][column]); 
Các vấn đề liên quan