Wyszukiwanie elementu w liście

Wyszukiwanie elementu w liście
DR
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 4 lata
  • Postów:37
0

Witam,

Kopiuj
 
private List<MojaKlasa> list = new ArrayList<>();
...
dodawanie obiektów do listy
...
final Date tmpDate = cal.getTime();
                if ((this.list.stream().filter(s -> s.getDateTimeStamp() == tmpDate && s.getID() == Integer.parseInt(tupleParts[3])).findAny().isPresent()))
{

} 

Co jest nie tak z tym wyszukiwaniem że java nie widzi obiektu w liście o danej dacie i ID?
Element taki na 100% się znajduje w liście, samo podanie warunku na Id działa.

Jest jakiś inny sposób żeby w javie wyciągnąć element z listy o zadanych parametrach ?

edytowany 1x, ostatnio: drakoo
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Wykorzystaj metodę compareTo lub equals, a nie porównuj adresy instancji (mowa o dacie).


edytowany 2x, ostatnio: Patryk27
W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 4 godziny
  • Postów:3584
1

Źle porównujesz obiekty. Operator "==" nie porównuje obiektów - on sprawdza, czy dwie różne zmienne wskazują na ten sam obiekt. Ponieważ porównujesz różne obiekty to dostajesz false. Powinieneś używać equals. Np.

Kopiuj
        Integer i = new Integer(1);
        Integer i2 = new Integer(1);

        System.out.println(i == i2); // false
        System.out.println(i.equals(i2)); // true

Druga rzecz - rozumiem, że pole MojaKlasa.dateTimeStamp jest klasy Date? Ponieważ wtedy znowu dostaniesz false.

DR
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 4 lata
  • Postów:37
0

Faktycznie compareto zadzałało dzięki!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.