Wpis z mikrobloga

Poza tym co to znaczy "kolejność Seta" skoro to jest zbiór a nie np. LinkedList. Czyli wór bez żadnej kolejności.
  • Odpowiedz
Set może działać w ogóle bez implementacji liczenia Hasha lub komparatora?


@patrolez: bazowa klasa Object w javie implementuje funkcję hashCode i equals, dlatego działa
  • Odpowiedz
@programista4k: domyślnie equals/hashCode działają ok dla tożsamych obiektów, jeśli to nie wystarczy, trzeba zaimplementować. Alternatywnie jakaś bardziej złożona weryfikacja czy są równoważne np z użyciem dodatkowej metody pomocniczej, ale nie polecam.
  • Odpowiedz
@bbkon: jak nie ma i nie może nadpisać metod z Objecta to musi jawnie porównywać wg wartości pól do których ma publiczny dostęp przez gettery (np. zaimplementować Comparator) i użyć iteratorów z obu setów do sprawdzenia kolejności elementów.

@programista4k:
  • Odpowiedz
via Wykop Mobilny (Android)
  • 1
@programista4k: przeiteruj je jednocześnie? Jest w Java coś takiego jak enumerator?
W C# pobierasz sobie 2 enumeratory dla każdego seta i w pętli for po ilości elementów sprawdź czy kolejne obiekty są równe ( ta sama referencja) i będzie śmigać
  • Odpowiedz
@programista4k: Być może zdecydowanie za późno, ale zaskoczony jestem, że nikt jeszcze nie napisał nic o AssertJ. Jest to jedna z najlepszych bibliotek do asercji w Java i podejrzewam, że to, czego oczekujesz, można by zrobić tak:

Set expectedResult = expectedResult();
Set result = generateResult();
Assertions.assertThat(result)
.usingRecursiveFieldByFieldElementComparator()
.containsExactlyElementsOf(expectedResult);
  • Odpowiedz