Wyszukiwanie elementu w liście

Wyszukiwanie elementu w liście
DR
  • Rejestracja: dni
  • Ostatnio: dni
  • 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 ?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

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

W0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3759
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: dni
  • Ostatnio: dni
  • 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.