Java int[][]배열을 반복하고 값 찾기
문제
내가 배열의 형태로'int[][]
'나타내는 좌표의 작은니다.각 협조에 할당되었는 자신의 값입니다.예 array[0][4] = 28
......
나는 두 가지 의문이 생길 수 있습니다.첫째,어떻게 반복해서 저장된 값이 있습니다.둘째,내가 할 수 있 값을 입력하고 그것의 특정 좌표 그리드에서 반환됩니다.무엇을 할 수있는 가장 좋은 방법이 될 것이 접근하는 이?
도움 주셔서 감사합니다!
해결책
루프를 위해 또는 루프를 위해 강화할 수 있습니다.
for (int row=0; row < grid.length; row++)
{
for (int col=0; col < grid[row].length; col++)
{
int value = grid[row][col];
// Do stuff
}
}
또는
// Note the different use of "row" as a variable name! This
// is the *whole* row, not the row *number*.
for (int[] row : grid)
{
for (int value : row)
{
// Do stuff
}
}
첫 번째 버전은 "코디네이트 찾기"질문에 대한 가장 쉬운 솔루션입니다. 내부 루프의 값이 올바른지 확인하십시오.
다른 팁
값을 반복하려면 루프 사용을 사용합니다.
int[][] matrix
//...
for(int row[] : matrix)
for(int cell : row){
//do something with cell
}
값에 따라 좌표에 액세스하려면 일종의 이중 해시 맵이 필요하지만 (java.util.hashmap a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ably a a beed a with so bech do boing
하는 모든 요소를 반복 그리드에서 이것을 보십시오:
int grid[][] = new int[10][10];
for(int i = 0; i < grid.length(); ++i) {
for(int j = 0; j < grid[i].length(); ++j) {
// Do whatever with grid[i][j] here
}
}
지 않는 한 당신의 그리드가 정렬되어 어떤 방법으로 당신은 아마 하지 않을 것보다 더 나은 어떤 것을 무력을 검색합니다.
에 대한 반복,그것을 생각은 다음과 같이 될 것이다(구문을 수도 있습 조금,나를 다루지 않은 배열에서 java 니다.):
int[][] grid; // just assuming this is already assigned somewhere
for(int x = 0 ; x < grid.length ; x++) {
int[] row = grid[x];
for(int y = 0 ; y < row.length ; y++) {
int value = row[y];
// Here you have the value for grid[x][y] and can do what you need to with it
}
}
검색에 대한 당신은 아마,그것을 사용해야를 반복한 다음,반면 당신은 그것을 발견했습니다.
당신이 찾고 있을 수도 있습의 위치를 동일한 값을 여러 번 다음할 수 있습,그러나 다른 클라이언트를 사용하여 결과를 hashtable.
루프를 사용하여 루프를 사용하여 x 및 y 치수를 반복하여 한 번에 하나씩 각 값을 극복 할 수 있습니다.
값을 입력하려면 위와 동일하지만 요청 된 값과 일치하는 것을 찾으십시오.
단일 클래스 내 에서이 컬렉션을 모두 차단하고 어떤 식 으로든 노출하지 않으면 가장 행복 할 것입니다.
이것은 검색 및 조회 루틴을이 수업으로 옮기는 것을 의미합니다.
스토리지의 경우 모든 사람이 덮은 반복을 위해 해시 가능 및 조회를 추가하십시오. 이 의견을 Nickolai의 게시물에 넣었습니다.
새 정수 (ix + iy * 1000)를 해시 테이블의 값으로 저장하십시오. Y 인덱스가 1000을 초과 할 수 있다면 더 큰 숫자를 사용하십시오. 인트는 실제로 큽니다. 다시 얻으려면 ix = val%1000, iy = val/1000을 사용하십시오.
배열과 해시 테이블이 동일한 클래스에 캡슐화되면 나머지 코드는 쓰기가 쉽고 깨끗합니다.
배열을 통해 검색하는 것 외에는 특정 값의 특정 좌표를 찾을 수있는 방법이 없습니다. 그러나 배열의 값이 고유 한 것으로 보장되는 경우 (즉, 각 값이 하나의 셀에서만 발생 함) 별도의 배열을 인덱스로 유지할 수 있으며,이 값에 의해 색인 된 각 값의 좌표를 저장합니다.