2013-07-29 3 views
-3

저는 String을 읽는 Hadoop Java에서이 작업을 수행합니다. 문자열은 토큰 화되어 배열에 넣어 진 거대한 문자열입니다. 키 - 값 쌍이 있지만 순서가 다릅니다. 나는이 명령을 엄격해서 테이블로로드 할 수 있기를 바랍니다. 그래서 SQL에서 열을 선택하면 (테이블에로드 한 후) 한 유형의 모든 키가 colA이어야합니다.정렬되지 않은 문자열을 순서가 지정된 문자열로 복사하는 효율적인 방법

문자열 배열의 각 단어를 확인하고 고정 된 위치에 새 문자열로 복사합니다. // 행

String[] newRow = new String[150]; 

for (int i = 0; i < row.length; ++i) { 

if(row[i].equals("token1")){ 
        newRow[0] = row[i]; //key 
        newRow[1] = row[i+1];//value 
       } 

       else if(row[i].equals("token2")){ 
        newRow[2] = row[i]; 
        newRow[3] = row[i+1]; 
       }//...and so on. Elseif ladder at least is at least 100 long. 

내가이 작업을 수행 할 수있는보다 효율적인 방법이 있는지 알고 싶어 토큰 화 된 순서가없는 문자열은 다음과 같은 다른 사다리가 만약 내가이 일을 생각하는 방법은 사용?

추신 : 문자열을 정렬하지 않습니다. 예 : row1 String은 {apple, good, banana, bad}, row2입니다. {banana, good, apple, bad} 여기서 사과와 바나나는 키입니다. 이제 제 산출물에서 첫 번째 열쇠와 바나나라고 불리는 두 개의 레코드를 갖게 될 것입니다. 결과는 다음과 같습니다 : newRow1 : {사과, 좋은, 바나나, 나쁜}, newRow2 : {사과, 나쁜, 바나나, 좋은}. 본질적으로 모든 입력을 고정 출력으로 재배치합니다.

+0

그래서'String' 배열을 정렬하고 있습니까? – acdcjunior

+1

이 질문에있는 언어가 부정확하고 많은 답변을 제공하는 데는 여러 가지 방법이 있습니다. – Gus

+2

평면 배열에 키/값 쌍이 저장되는 이유는 무엇입니까? – roippi

답변

2

모두 버리고 TreeMap을 사용하십시오. 그것이 바로 그 때문입니다.

+0

대신 HashMap은 어떻습니까? 나는 그들을 분류 할 필요가 없다. – user2441441

+0

'HashMap'의 순서가 일관되게 실행되지 않을 수 있습니다. 일관성을 원하면'TreeMap'을 사용하십시오. –

관련 문제