2014-12-10 2 views
0

탭으로 구분 된 DAT 파일에서 데이터를로드하는 Java 프로그램을 작성하고 국가 및 신용 등급별로 그룹화 된 평균 금액을 유로화 (EUR)로 결정하려고합니다.Java의 기능별 그룹화

내가 한이 개 질문

  1. 배열로 spliting 후 데이터 구조로 데이터를로드하는 가장 좋은 방법은 무엇입니까

    ? 나는 첫 번째 시도를 부여하고이 구현 같은 모습입니다 :
  2. 어떻게 자바
  3. 의 기능에 의해

업데이트 그룹을 제공에 대한 접근 않습니다. 개선의 여지가있는 것처럼 느껴집니다.

/** 
* @param rows - Each row as a bean 
* This method will group objects together based on Country/City and Credit Rating 
*/ 
static void groupObjectsTogether(List<CompanyData> rows) { 
    Map<String, List<CompanyData>> map = new HashMap<String, List<CompanyData>>(); 

    for(CompanyData companyData : rows){ 
     String key; 

     if(companyData.getCountry().trim().equalsIgnoreCase("") || companyData.getCountry() == null){ 
      key = companyData.getCity()+":"+companyData.getCreditRating();   //use city+creditRating as key 
     }else{ 
      key = companyData.getCountry()+":"+companyData.getCreditRating();  //use country+creditRating as key 
     } 

     if(map.get(key) == null){ 
      map.put(key, new ArrayList<CompanyData>()); 
     } 
     map.get(key).add(companyData); 
    } 

    processGroupedRowsAndPrint(map); 
} 
+0

(HSQL과 같은) 데이터베이스를 사용할 수 있습니까? 아니면 모두 Java 여야합니까? – Ascalonian

+0

데이터 구조가 어떻게 보이나요? 행 또는 셀을 포함하는 1 차원 배열 또는 2 차원 배열이 있습니까? – user902383

+0

데이터베이스를 사용할 수 없기 때문에 최선의 코딩 방법을 따라야합니다. 예를 들면. 통화 정밀도를 위해 BigDecimal을 사용해야합니다. – Sachin

답변

0

모두 컴퓨터의 데이터 및 성능 (CPU와 메모리)에 따라 다릅니다. 데이터의 양이 고정에게 당신은 단순히 사용하여 각 행을 분할해야

String[] row = String.split(";"); 

사용하여 배열에있는 모든 데이터를 입력 할 수 있으며 열 수 (기록 또는 열 수백만 이하) 중요하지 않다; 구분 기호로 사용합니다. 그럼 당신의 HashMap를 사용하여 그룹화 기능, 즉 : 위의 구문 또는 기타 간단한 오류 (내가 어떤 바보 같은 실수가없는 경우 확인하기 위해 손에 어떤 도구가없는)에 대한

ArrayList<String[]> rowAr = new ArrayList<String[]>(); 
HashMap<String,ArrayList<Integer>> map = new HashMap<String,ArrayList<Integer>>(); 
int index = 0; 
for (String rowStr: rows) { 
    String[] row = rowStr.split(";"); 
    rowAr.add(row); 
    String companyCode = row[0]; 
    //please keep in mind that for simplicity of the example I avoided 
    //creation of new array if it does not exist in HashMap 
    ((ArrayList<Integer>)map.get(companyCode)).add(index); 
    index++; 
} 

죄송를 달성 할 수있다.