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