Slownik, wiele znaczen jednego slowa

0

Robię słownik polsko- francuski i vice versa,
zastanawiam się aktualnie jak rozwiązać problem tego ze jakieś słowo ma wile znaczeń
w sensie ze np po polsku kot a po fr. chat, matou etc
Chodzi mi o to ze zrobiłem sobie klasę Word która ma pola Stringow:
polishWord, frenchWord, i czy nie lepiej byłoby zmienić je na tablice czy raczej dla każdego znaczenia tworzyć w takim przypadku dwa obiekty Word,
w pierwszym frenchWord to chat a w drugim matou etc

0

Dictionary<String, List<String>>?
Jak nie masz Dictionary to zamień Dictionary na HashMap lub Map, praktycznie każdy język programowania ma jakiś tego odpowiednik w standardzie

0

-pisze w Java
twój pomysł rozumiem i już myślałem nad nim ale nie wydaje mi się czy osiągnę zamierzony przeze mnie efekt:

cała klasa Word bez setterow etc:

 public class Word {
    private int id;
    private String polishWord;
    private String frenchWord;
    private Kind kind;
    private static int counter=0;

i jak wrzuce to do Map<String, List<String>>
to bedzie tak ze key to "kot" i ok jak sie odwolam do tego to dobiore sie do values czyli wyswietli mi , chat i matou, ale chcialbym takze aby dzialalao to w druga strone czyli jak chce poszukac "chat" to co znajde?
nie wiem czy dobrze wytlumaczylem o co mi chodzi wiec moze tak: chce aby to dzialalo w dwie strony, czytalem o BibiMap ale tam relacje musza byc 1:1.
dlatego zastanawiam sie czy tuaj nie zrobic tak ze bedzie zestaw slow z kluczem FR i PL i w zaleznosci ktorego slownika uzywac to po tych wartosciach bedzie mi szuakc odpowiednia mape ( jedna z dwoch) i tam juz prosto

2

pseudo kod (nie znam Javy):

public class Word {
  public Word(string _word, ...)
  {
    this.word = _word;
    // ...
  }
  private string word;
  // nie bardzo wiem do czego to sluzy te cale Kind, ale sobie dodaj jak potrzebujesz
  // ... (tutaj te Twoje settery itp.)
}
Dictionary<String,  List<Word>> frenchToPolish;
Dictionary<String,  List<Word>> polishToFrench;

void AddMapping(String polishWord, String frenchWord, ...) // ... uzupełnij tymi swoimi Kind itp.
{
  List<Word> french;
  List<Word> polish;
  if (!frenchToPolish.TryGet(frenchWord, polish))
  {
    frenchToPolish[frenchWord] = polish = new List<Word>();
  }
  if (!polishToFrench.TryGet(polishWord, french))
  {
    frenchToPolish[polishWord] = french = new List<Word>();
  }
  french.Add(new Word(frenchWord, ...));
  polish.Add(new Word(polishWord, ...)); // ... uzupelnij innymi parametrami ktore w konstruktorze przekazujesz
}
0

-kind to zmienna ktora okresla rodzaj: rodzaj zenski, meski, etc i wiarzacy sie z tym przedrostek w jezyku francuskim
-rozumiem ze funkcje AddMapping nalezy wywolywac po kazdym utworzonym nowym obiekcie Word
-zrobiles zmienna word a co z frenchWord i polis.. wydawalo mi sie ze wyrzuciles ale uwayc ich jako argumentow a poznie (ostatnie 2 linijki) dodajesz jak w konstruktorze ale to wyglda jakby to mial byc jako word dodane ,
w takim razie czym french/olishWord sa jako argumenty AddMapping

0

-rozumiem ze funkcje AddMapping nalezy wywolywac po kazdym utworzonym nowym obiekcie Word

Nie, jak chcesz powiązać polskie słowo z francuskim to wywołujesz "AddMapping", nigdy sam nie tworzysz słów, ta funkcja robi to za Ciebie.

-zrobiles zmienna word a co z frenchWord i polis.. wydawalo mi sie ze wyrzuciles ale uwayc ich jako argumentow a poznie (ostatnie 2 linijki) dodajesz jak w konstruktorze ale to wyglda jakby to mial byc jako word dodane ,
w takim razie czym french/olishWord sa jako argumenty AddMapping

zarówno polskie słowo jak i francuskie słowo są słowami. Jak chcesz przetłumaczyć polskie słowo na francuski to polishToFrench[polskieSlowo] zwroci Ci liste francuskich slow przypisanych temu wyrazowi i podobnie w druga strone

1 użytkowników online, w tym zalogowanych: 0, gości: 1