簡體   English   中英

LinkedHashMap,方法內的功能?

[英]LinkedHashMap, functionality within method?

以下方法如何工作?

Pairs是一個LinkedHashMap,我不確定增強的for循環以及它如何與hasmap一起工作。 即鍵集。

/**
         * Finds all names in the initial input list that match phonetically with
         * the supplied name
         * 
         * @param phoneticName
         *            The name for which you want to find matches
         * @return An ArrayList of all phonetically matching names
         */
        public ArrayList<String> findMatchingNames(String phoneticName) {
            ArrayList<String> matchedNames = new ArrayList<>();

            for (String s : Pairs.keySet()) {
                if (phoneticName.equals(Pairs.get(s))) {
                    matchedNames.add(s);
                }
            }
            return matchedNames;
        }
    }

該方法遍歷LinkedHashMap當前存在的所有鍵:

for (String s : Pairs.keySet()) {

如果映射中與此鍵相關聯的值等於傳遞的參數,則將該鍵保存在matchedNames名稱列表中:

if (phoneticName.equals(Pairs.get(s))) {
    matchedNames.add(s);
}

然后,我們返回鍵的列表,其值等於傳遞的參數phoneticName

基本上增強了for循環,可與所有可迭代的集合一起使用。

因此,在本例中,如果我們采用LinkedHashMap,則它是不可直接迭代的,因為1)它不是一個collection,而是一個鍵值對。

2)我們不能迭代直接獲得鍵值。

所以我們需要拿鑰匙並將它們放入某個集合中,比如說集合。

為什么設置? 因為地圖將具有唯一(無重復)鍵,所以它們在地圖內部實現了一個稱為keySet的方法。

因此map.keySet()返回鍵集。

現在我們可以輕松地使用for循環進行迭代,因為set可以迭代。

所以我們寫了

for (String s : Pairs.keySet())

現在,以上語法中的每個s都是一個字符串,該字符串在每次迭代中都一個一個地來自keySet。

現在將傳遞的名稱與映射中對應鍵的值進行比較,如果相等,則將該名稱添加到列表中

Pairs.get(s) ->給出鍵s的映射值。

if (phoneticName.equals(Pairs.get(s))) {
    matchedNames.add(s);
}

在方法末尾,返回此新形成的匹配列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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