[英]how can I write elements from my array to my hash map in efficient way in java?
在我的java
代碼中,我有一個空的哈希映射:
private Map<String, String> map = new HashMap<>();
我還有一個字符串數組:
String[] array = path.split("/");
該數組可以為空、空或包含一到三個元素。 我需要根據這個數組填充我的哈希映射,但是鍵應該是硬編碼的 - 我的意思是對於映射中的第一個值,鍵應該是one
,對於第二個應該是two
,對於第三個應該是three
。 我寫了這個算法:
if (array == null || array.length == 0){
LOG.warn("Path is empty");
}
if (array.length == 1){
map.put("one", array[0]);
} else if (array.length == 2) {
map.put("one", array[0]);
map.put("two", array[1]);
} else if (array.length == 3) {
map.put("one", array[0]);
map.put("two", array[1]);
map.put("three", array[2]);
}
但我認為可能有更好(或絕對更漂亮)的處理方式。 你能幫我解決這個問題嗎?
您可以在以下代碼之前檢查數組的空值
String[] keys = {"one", "two", "string"};
for(int = 0; i < array.length;i++){
map.put(keys[i], array[i]);
}
由於它被標記為 java 8,因此您有一個流式答案,即使在訪問索引時,for 循環也可能更容易閱讀(非常主觀)
String[] numbers = {"one", "two", "three"};
Map<String, String> map = array == null
? new HashMap<>()
: IntStream.range(0, array.length)
.mapToObj(Integer::valueOf)
.collect(Collectors.toMap(i -> numbers[i], i -> array[i], (i1, i2) -> {
throw new RuntimeException();
}, LinkedHashMap::new));
private static final String[] numNames = {
"",
" one",
" two",
" three",
" four",
" five",
" six",
" seven",
" eight",
" nine",
" ten",
" eleven",
" twelve",
" thirteen",
" fourteen",
" fifteen",
" sixteen",
" seventeen",
" eighteen",
" nineteen"
};
private static String[] array = new String[]{"1","2"};
private static Map<String, String> map = new HashMap<>();
public static void main(String[] args) {
for(int i = 0; i < array.length; i++){
map.put(numNames[i], array[i]);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.