達到一個特定的角色在不同的地圖中的值我有以下字符串商店在Java中
輸入:
1 APPLE
2 BANANA
DOWN:
1 ORANGE
6 GRAPES
我要創建2個不同的地圖,並通過值
1 APPLE
2 BANANA
對一張地圖和類似地,
1 ORANGE
6 GRAPES
爲其他地圖。這些值來自單個數組列表,我想在達到字符「:」時開始分割。任何幫助將是偉大的
達到一個特定的角色在不同的地圖中的值我有以下字符串商店在Java中
輸入:
1 APPLE
2 BANANA
DOWN:
1 ORANGE
6 GRAPES
我要創建2個不同的地圖,並通過值
1 APPLE
2 BANANA
對一張地圖和類似地,
1 ORANGE
6 GRAPES
爲其他地圖。這些值來自單個數組列表,我想在達到字符「:」時開始分割。任何幫助將是偉大的
我能夠適應我的答案你的問題,由於一些澄清。
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]);
}
}
在你的輸出,可以消除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);
}
}
那麼只需將它們添加到您的第一個數組中,直到遇到':'然後添加到第二個數組中。你怎麼了 ? – Nico
我對這個問題背後的意圖很感興趣。輸入數據看起來像數字是一個計數而不是一個標識符。你確定從整數到字符串的映射是正確的模型嗎?它看起來像水果名稱是獨特的,你應該從水果映射到數量。你能提供一些你的問題背後的細節嗎?我懷疑有一個更好的方式來做你正在問的東西。 – sprinter
如何將它們存儲到'Map>'? –
saka1029