2016-04-30 79 views
-1

達到一個特定的角色在不同的地圖中的值我有以下字符串商店在Java中

輸入:

1 APPLE 
2 BANANA 

DOWN: 

1 ORANGE 
6 GRAPES 

我要創建2個不同的地圖,並通過值

1 APPLE 
2 BANANA 

對一張地圖和類似地,

1 ORANGE 
6 GRAPES 

爲其他地圖。這些值來自單個數組列表,我想在達到字符「:」時開始分割。任何幫助將是偉大的

+0

那麼只需將它們添加到您的第一個數組中,直到遇到':'然後添加到第二個數組中。你怎麼了 ? – Nico

+0

我對這個問題背後的意圖很感興趣。輸入數據看起來像數字是一個計數而不是一個標識符。你確定從整數到字符串的映射是正確的模型嗎?它看起來像水果名稱是獨特的,你應該從水果映射到數量。你能提供一些你的問題背後的細節嗎?我懷疑有一個更好的方式來做你正在問的東西。 – sprinter

+0

如何將它們存儲到'Map >'? – saka1029

回答

2

我能夠適應我的答案你的問題,由於一些澄清。

Map<Integer, String> horizontal = new HashMap<>(); 
Map<Integer, String> vertical = new HashMap<>(); 
boolean horiz = true; 
for(String line: al2){ 
    if(line.contains(":")) horiz = false; 
    else if(line.trim().length() > 0) { 
    String[] splitted = line.split(" "); 
    if(horiz) horizontal.put(Integer.valueOf(splitted[0]), splitted[1]); 
    else vertical.put(Integer.valueOf(splitted[0]), splitted[1]); 
    } 
} 
+0

我想要所有的輸入在一個地圖。由於地圖不允許重複鍵,但由於我的輸入有重複鍵(例如「1」),我只是想到了這種方法@Nico – Anusha

+0

@Anusha好吧,但不應該讓他們反過來呢?這些數字和這個「Down:」代表什麼? – Nico

+0

其縱橫填字遊戲和輸入代表答案。我必須將答案與線索相匹配,唯一匹配的方法是在那裏用整數的幫助@Nico – Anusha

0

在你的輸出,可以消除DOWN:,我以爲意爲被冷落的實際輸出的標誌。

基本上你創建了一個你從循環中切換的迷你狀態機。用1布爾值這是可以這樣管理的,但有多個值我建議創建一個狀態對象。

List<String> list1 = new ArrayList<String>(); 
List<String> list2 = new ArrayList<String>(); 

// obviously name this after the actual purpose secondlist serves 
// e.g. storeAddressDetails or whatever your usecase is 
boolean putInSecondList = false; 

for(String line : lines) { 
    if (line.trim().isEmpty()) { 
     // ignore whitespace 
     continue; 
    } 
    if (line.contains(":")) { 
     // skip and set passedMarker 
     passedMarker = true; 
     continue; 
    } 
    if (putInSecondList == false) { 
     list1.add(line); 
    } else { 
     list2.add(line); 
    } 
} 
+0

我想要所有的輸入在地圖中。由於我的輸入包含重複的鍵我怎麼能這樣做? @Joeblade – Anusha

+0

@Anusha,我認爲你需要更新你的問題。具體寫下你想要的東西以及你想要的物品。你可以使用json符號。 例如: 預期輸出:{ 「1」:[ 「APPLE」, 「桔子」], 「2」:[ 「香蕉」], 「6」:[ 「葡萄」]} 任何其它形式是很好,但很難猜到你的意圖 – Joeblade

+1

@Nico有我想的正確答案,儘管我不喜歡使用i Joeblade