Porównywanie obiektów w Javie

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?

0

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

2

Zobacz sobie System.identityHashCode:

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)));
    }
}
0

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

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

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

0

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

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