Wyszukiwanie obiektow

0

Witam,
Spędziłem dziś sporo czasu na znalezienie rozwiązania dla mojego problemu, ale nic z tego. Jestem początkujący, więc pytanie może się wydać banalne, ale istnieje.
Mam klasę, która ma w sobie prywatną zmienną int, która przyjmuje dla różnych obiektów wartości z przedziału 1-10. Muszę wypisać obiekty, dla których ta wartość to np. 2. A pytania jest dokładnie takie: jak w Javie mogę przeprowadzić przeszukiwanie pośród obiektów, czy jest możliwość wykonania pętli po wszystkich obiektach danej klasy?

Pozdrawiam, Konrad

0

Wprost nie można zrobić takiej sztuczki. Można za to wprowadzić do obiektu listę "słabych referencji", która będzie przechowywać dane o obiektach klasy.

0

Jeżeli liczba tych obiektów jest stała, niewielka i znana w czasie kompilacji, to wykorzystaj enumy:

http://java.sun.com/docs/books/tutorial/java/javaOO/enum.html
Możesz odwoływać się do każdego enuma bezpośrednio po nazwie.
Masz dostęp do wszystkich obiektów przez values().
Możesz też używać klasy EnumMap.

Jeżeli nie znasz obiektów w czasie kompilacji, to musisz przechowywać je w jakiejś kolekcji na zmiennej statycznej. Jeżeli obiekty te mają być automatycznie usuwane, gdy nikt już nie ma na nie referencji (oprócz Twojej kolekcji) - wykorzystaj wzorzec Flyweight: http://en.wikipedia.org/wiki/Flyweight_pattern

0

Hmm.. a wydawało się nierealne, że nie ma takiej możliwości..
Albo nie bardzo rozkminiłem o co chodzi we wzorcu flyweight, albo nie bardzo pasuje akurat w tej sytuacji.
To co udało mi się zrobić, to dodałem do klasy zmienną statyczną, która przechowuje aktualna liczbę obiektów (zwiększa się o jeden w konstruktorze) oraz statyczna tablicę (tutaj dodaję elementy też w konstruktorze). No i będę musiał użyć unbounded arrays, skoro ma nie być ograniczenia ilości obiektów, prawda?
Uważacie, że to dobry sposób? Jest coś lepszego, co dawałoby podobny efekt?

0

A co to "unbounded arrays"?

Wykorzystaj obiekt ArrayList. Nie musisz oddzielnie pamiętać liczby obiektów. Masz bardzo szybką metodę size().

Jeżeli masz jakieś id dla tych obiektów, to lepiej wykorzystaj słownik (id=>obiekty) za pomocą HashMap. Będziesz mieć bardzo szybkie wyszukiwanie po id.

0

unbounded arrays to właśnie taka struktura, która w Javie jesy zaimplementowana jako ArrayList i tego użyłem:) HashMap też wykorzystałem, przydatna rzecz

dziękuję wszystkim za pomoc i zainteresowanie, wszystko się udało i wyjaśniło

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