Wyszukiwanie elementu w liście

0

Witam,

 
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 ?

0

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

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.

        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.

0

Faktycznie compareto zadzałało dzięki!

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