2013-07-29 82 views
-3

我在Hadoop Java中讀取字符串。該字符串非常大,已被標記並放入數組中。 它有鍵值對,但它們沒有任何順序。我想這個命令是僵化的,所以我可以加載它作爲一個表。所以在SQL中,如果我選擇一列(在將它加載到表中後),則一個類型的所有鍵應該在colA中。將無序字符串複製到有序字符串中的有效方法

我正在檢查字符串數組的每個單詞並將它們複製到一個固定位置的新字符串中。我想這樣做的方法是使用的if else階梯是這樣的: //行是標記化無序字符串

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. 

我想知道是否有更有效的方式來做到這一點?

PS:我沒有排序字符串。例如:row1 String是{apple,good,banana,bad},row2 String是{banana,good,apple,bad}}蘋果和香蕉是關鍵。現在在我的輸出中,我將有兩個記錄,第一個是蘋果,第二個是香蕉。所以輸出結果如下:newRow1:{apple,good,banana,bad},newRow2:{apple,bad,banana,good}。基本上我正在重新排列所有輸入到固定輸出。

+0

所以你正在排序一個'字符串'數組? – acdcjunior

+1

在這個問題中的語言有很多方法是不準確的,這使得很難給出答案。 – Gus

+2

爲什麼地球上的鍵/值對存儲在一個平面陣列中? – roippi

回答

2

把它全部扔掉並使用TreeMap。這就是它的目的。

+0

而不是HashMap呢?我不需要他們排序。 – user2441441

+0

'HashMap'的排序可能不一致運行。如果你想要一致性,使用'TreeMap'。 –

相關問題