본문 바로가기
Programming/JAVA

[JAVA] 배열을 2차원 배열로 만드는 법 기존 테이블에서 새로운 테이블로 변환

by JeeU147 2020. 4. 24.
반응형

코딩을 하다 보니 배열을 2차원 배열로 바꿔서 사용 해야 될때가 있었습니다.

 

다시 까먹지 않게 로직이라도 작성해 보려고 합니다.

 

JSONParser jsonParser = new JSONParser();
ArrayList<String[]> gridData = new ArrayList<String[]>();
ArrayList<String[]> stringData = new ArrayList<String[]>();


    JSONObject jaStatistics = new JSONObject();
    JSONObject jo = (JSONObject) jsonParser.parse(response.getBody().toString());
    JSONArray columns = (JSONArray) jsonParser.parse(jo.get("columns").toString());

    String[] header = new String[columns.size()];
    for(int i = 0; i < columns.size(); i++) {
    	jaStatistics = (JSONObject) jsonParser.parse(columns.get(i).toString());
    	header[i] = jaStatistics.get("name").toString();
	}
    
	gridData.add(header);

  for(int i = 0; i < columns.size(); i++) {
    
      JSONObject jsonObject = new JSONObject();
      jsonObject = (JSONObject) jsonParser.parse(columns.get(i).toString());
      JSONArray jaarray = (JSONArray) jsonParser.parse(jsonObject.get("tableData").toString());
      String[] data = new String[jaarray.size()];
      for(int j = 0; j < jaarray.size(); j++) {
      	 JSONObject joData = (JSONObject) jsonParser.parse(jaarray.get(j).toString());
     	 data[j] = joData.get("data").toString();
      }
	  stringData.add(data);
  }
    
    int length = 0;
			
     for(int i = 0; i < stringData.size(); i++) {
            if(length < stringData.get(i).length) {
            length = stringData.get(i).length;
          }
     }
            
    String[][] stringArray = new String[stringData.size()][length];
			
       for(int i = 0; i < stringData.size(); i++) {
           String[] array = stringData.get(i);
           for(int j = 0; j < array.length; j++) {
           stringArray[i][j] = array[j];
          }
       }

	String[][] stringArrayAfter = new String[length][stringData.size()];

	for(int i = 0; i < stringData.size(); i++) {
		for(int j = 0; j < length; j++) {
			if(stringArray[i][j] == null) {
				stringArrayAfter[j][i] = "";
		} else {
			stringArrayAfter[j][i] = stringArray[i][j];
		}
	}				
}

  for(int i = 0; i < length; i++) {
  	gridData.add(stringArrayAfter[i]);
  }

 

위 코드는 표에 해당 하는 값을 나타내기 위한 로직입니다.

 

기존 다른테이블에 있는 값을 새로운 테이블에 넣기 위한 코드입니다.

 

stringData는 gridData(테이블)에 들어갈 데이터입니다.

 

girdData는 새로운 테이블이라고 보시면 됩니다.

 

반응형

댓글