簡體   English   中英

如何在java中以有效的方式將數組中的元素寫入我的哈希映射?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM