#programowanie #naukaprogramowania #java #informatyka Mam kolekcję HashSet, w której przechowuję obiekty jednej klasy, zawierającej pole "nazwa". Potrzebuję zrobić tak, żeby dodając do kolekcji kolejny obiekt o nazwie identycznej z obiektem już istniejącym w kolekcji, ten nowy zastępował stary (lub przynajmniej się nie dodawał). Jak to wykonać?
@Pierwiastek_z_Czech : ustaw sobie booleana, w while'u zrób fora, który sprawdza czy addedObject.getName.equals(Object.getname), jeśli tak to ustaw odpowiednio bool, żeby nie dodawał, po skończeniu obiegu fora, ale jeszcze w while'u dodaj ifa z tym boolem ustawionego tak, żeby dodał obiekt do setu
to jakieś zadanie rekrutacyjne? bo przyznam, że problem wygląda bardzo znajomo:)
@kaervek: Zadanie na laborki na studiach. Niestety ta metoda, którą zasugerowałeś nie jest tym, o co mi chodzi - musi to się opierać bardziej na metodach kolekcji, a nie na łataniu ifami czy pętlami
@Pierwiastek_z_Czech: Jeśli nie chcesz, żeby equals porównywał tylko po nazwie, jak radzi @ania-nowak1231 to możesz użyć TreeSet z Comparatorem po nazwie:
Set set = new TreeSet<>(Comparator.comparing(s -> s.getName()));
@Pierwiastek_z_Czech: trzymając się HashSeta, jeśli zawsze chcesz zastępować stary obiekt na nowy oprócz dwóch wcześniej wymienionych metod nadpisz również add z HashSeta by np. stary najpierw był usuwany http://pastebin.com/QZqZK05A
Może i dokonują ludobójstwa w gazie, okaleczają dzieci i znęcają się nad zwierzętami, ale za to dzięki nim mamy paliwo po 6 zł ( ͡°͜ʖ͡°) #iran #izrael #usa #zydzi #zyd #paliwo #palestyna
Mam kolekcję HashSet, w której przechowuję obiekty jednej klasy, zawierającej pole "nazwa". Potrzebuję zrobić tak, żeby dodając do kolekcji kolejny obiekt o nazwie identycznej z obiektem już istniejącym w kolekcji, ten nowy zastępował stary (lub przynajmniej się nie dodawał). Jak to wykonać?
to jakieś zadanie rekrutacyjne? bo przyznam, że problem wygląda bardzo znajomo:)
Się nie dodawał -> nadpisz equals, żeby porównywał tylko nazwa.
Zastępował stary -> użyj Map
set.add(object);
a tak można? Najpierw usuniesz wszystkie obiekty o takim polu, a później dodasz nowy.
Nie wiem, czy rozumiem to zadanie :D
Set set = new TreeSet<>(Comparator.comparing(s -> s.getName()));1.
Obj a = new Obj("A"):