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
- Rejestracja:ponad 13 lat
- Ostatnio:prawie 10 lat
- Postów:65
- Rejestracja:ponad 13 lat
- Ostatnio:prawie 10 lat
- Postów:65
-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
- Rejestracja:prawie 16 lat
- Ostatnio:5 miesięcy
- Postów:2514
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
}
- Rejestracja:ponad 13 lat
- Ostatnio:prawie 10 lat
- Postów:65
-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
- Rejestracja:prawie 16 lat
- Ostatnio:5 miesięcy
- Postów:2514
-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