2012-11-24 20 views
157

Próbuję zaimplementować słownik (jak w książce fizycznej). Mam listę słów i ich znaczenie.Jak utworzyć słownik w Javie?

Jaka struktura/typ danych Java zapewnia przechowywanie listy słów i ich znaczeń jako pary klucz/wartość.

W jaki sposób, biorąc pod uwagę klucz, mogę znaleźć i zwrócić wartość?

+16

Cóż, w duchu koncentrując się na kwestii, a nie użytkownik, mam do ponownego głosowania. Jestem pewien, że i tak ten użytkownik ukończył już kurs. ;) Jest to duplikat http://stackoverflow.com/questions/1540673/java-equivalent-to-python-dictionaries, ale myślę, że odpowiedzi tutaj są lepsze. –

Odpowiedz

8

Zastosowanie Map interface i implementacja jak HashMap

+0

Link do rozwiązania jest mile widziany, ale upewnij się, że twoja odpowiedź jest przydatna bez niego: [dodaj kontekst związany z linkiem] (// meta.stackexchange.com/a/8259), aby inni użytkownicy mieli pojęcie, co to jest i dlaczego tam jest, a następnie zacytuj najważniejszą część strony, do której prowadzi link, jeśli strona docelowa jest niedostępna. [Odpowiedzi, które są niewiele więcej niż link, mogą zostać usunięte.] (// stackoverflow.com/help/deleted-answers) – FelixSFD

+1

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej jest dołączyć istotne części odpowiedzi tutaj i dostarczyć link do odniesienia. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. - [Z recenzji] (/ review/low-quality-posts/17044904) – sfat

48

Stwarza słownika tekstem (string):

Map<String, String> dictionary = new HashMap<String, String>(); 

następnie użyć go jako:

dictionary.put("key", "value"); 
String value = dictionary.get("key"); 
+1

'słownik [" klucz "]' nie działa - powinien to być 'dictionary.get (" klucz ")'. – arshajii

+9

To prawda, że ​​pewnie jakiś C# wślizgnął się :) – SmartK8

221

Będziesz potrzebował Map<String, String>. Klasy, które implementują interfejs Map obejmują (ale nie wyłącznie):

Każdy jest przeznaczony/zoptymalizowane dla określonych sytuacjach (przejdź do ich docs po więcej informacji). HashMap jest prawdopodobnie najczęstszym; domyślne ustawienie.

Na przykład (przy użyciu HashMap):

Map<String, String> map = new HashMap<String, String>(); 
map.put("dog", "type of animal"); 
System.out.println(map.get("dog")); 
 
type of animal 
+1

@Cruncher Implementuje również 'Mapę' (sprawdź javadoc) – arshajii

+1

@arshajii Mam wątpliwości, że ręcznie mapujemy wszystkie ciągi w słowniku lub mogę powiedzieć, że ręcznie przechowujemy znaczenie wszystkich słów. Moje pytanie brzmi: czy istnieje sposób na pliki db (dump) ze słownika w celu pobrania słów i ich znaczenia/definicji, abyśmy mogli uniknąć dodawania znaczenia każdego słowa ręcznie –

+0

@VighaneshGursale Będziesz musiał użyć metody put do zbudowania twoja struktura danych podczas przeprowadzania egzekucji. Pomyśl o poleceniu put jako odczytywaniu pliku z dysku i umieszczeniu go w pamięci (ram), abyś mógł z nim pracować. Jeśli masz plik, który chcesz wczytać jako strukturę danych przy ładowaniu auto, musisz zajrzeć do źródła Java, ale jego złożoność. –

Powiązane problemy