Pierwotnie napisałem numer ArrayList
i zapisałem w nim unikalne wartości (nazwy użytkowników, tj. Strings
). Później musiałem użyć ArrayList
, aby wyszukać, czy istnieje w nim użytkownik. To jest O(n)
dla wyszukiwania.Czy warto przechowywać dane jako klucze w HashMap przy pustych/pustych wartościach?
Mój szef techniczny chciał, żebym to zmienił na HashMap
i zapisał nazwy użytkowników jako klucze w tablicy, a wartości jako puste Strings
.
Więc w Javie -
hashmap.put("johndoe","");
mogę sprawdzić, czy użytkownik istnieje później uruchamiając -
hashmap.containsKey("johndoe");
To O(1)
prawda?
Mój szef powiedział, że był to skuteczniejszy sposób na zrobienie tego i miał dla mnie sens, ale wydawało się, że jest trochę za późno, aby umieścić puste/puste wartości w hashmap i przechowywać w nim elementy jako klucze.
Moje pytanie brzmi, czy to dobre podejście? Efektywność bije na poziomie ArrayList#contains
lub ogólnie w poszukiwaniu tablic. To działa. Martwię się, nie widziałem, żeby ktokolwiek inny zrobił to po wyszukiwaniu. Być może brakuje mi jakiegoś oczywistego problemu, ale nie widzę go.
plus1, ponieważ jest to prawidłowe pytanie, gdy nie znamy struktur danych Javy. – Daniel
'HashSet' jest implementacją' HashMap.keySet() '. Jeśli chcesz zmienić mapę w zestaw, możesz użyć 'set = Collections.newSetFromMap (map)' –
To pytanie nie jest błędne. To forum jest niewłaściwe. "Stack Overflow to strona z pytaniami i odpowiedziami dla programistów profesjonalnych i entuzjastów". – rdllopes