簡體   English   中英

如何從 LinkedHashMap 獲取密鑰

[英]How to get a key from LinkedHashMap

如何從 LinkedHashMap 獲取密鑰?

例如,我有包含鍵名和用戶名的LinkedHashMap ,我需要在掃描儀的幫助下輸入名稱,然后我想查看該元素具有什么鍵,我輸入的元素:

static LinkedHashMap<Integer, String> names = new LinkedHashMap<>();
static Scanner sc = new Scanner(System.in);
static int i = 1;
stasic String name;

public static void main(String[] args) {
    int b = 0;
    while (b == 0) {
        System.out.println("Input your name: ");
        name = sc.nextLine;
        names.put(i, name);
        i += 1;
        outName();
    }
}

public static void outName() {
    System.out.println("Input name: ");
    name = sc.nextLine();
    if (names.containsValue(name)) {
        //I do not know what should I do here?
    }
}
for (Map.Entry<String, ArrayList<String>> entry : names.entrySet()) {
String key = entry.getKey();
ArrayList<String> value = entry.getValue();
}

使用 Map.Entry 進行迭代

如果你想按照它們在 Set 中的順序收集密鑰,那么它是這樣的:

map.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toCollection(LinkedHashSet::new));

這里 LinkedHashSet 維護了 LinkedHashMap 的插入順序。 如果您使用 HashSet,它可能會更改鍵的順序。 為了確保使用 LinkedHashSet。

同樣的事情也適用於 ArrayList 的情況。 ArrayList 維護插入順序,因此無需擔心順序。

map.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toCollection(ArrayList::new));

暫無
暫無

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

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