Porównywanie obiektów w Javie

Porównywanie obiektów w Javie
M4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 221
0

Mam kilka obiektów Integer 1 w liście (lista[1,1,1,1]) i jeśli je porównam to hashcode i equals zwrócą True, i tutaj moje pytanie, czy jest jakaś funkcja która je porówna (pod innym kątem) i zwróci false?

S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 3573
0

Nie za bardzo rozumiem, co chcesz porównać i jak? :D

YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2384
2

Zobacz sobie System.identityHashCode:

Kopiuj
public class Jedynki {
    public static void main(String[] args) {
        List<Integer> aList = Arrays.asList(new Integer(1), new Integer(1), 1,1);
        aList.forEach(x -> System.out.println(System.identityHashCode(x)));
    }
}
M4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 221
0

Np porównanie lista.get(0).equals(lista.get(1))

TR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 731
0

tzn. że jak? można porównywać obiekty, lecz jak masz upakowane na liście obiekty, to nie da się porównać ich hashcodów bo w zasadzie to co będziesz porównywał, to ich typy a nie obiekty z których są zrobione. Czyli jak masz lista[1, 1, 1, 1] i wszystkie są typu Integer to masz wynik true. Jak dla mnie to jest wtedy typ a nie obiekt Integer. No chyba, że są jakieś magiczne zaklęcia na to. Jedyny sposób, żeby to sprawdzić to zdekompilować wyprodukowany plik .class, do tego można użyć javap. https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javap.html

M4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 221
0

konkretnie to mam listę obiektów pewnej klasy i w moim wypadku identityHashCode w zupełności wystarczy. Te 1 były tylko dla przykładu, sorry jak troszkę zamieszałem przez to

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 105
0

zmień na new String a potem przyrównaj == . To będziesz miał różne obiekty xD

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.