2012-12-22 15 views
5

Potrzebuję klasycznej Java do reprezentowania nieuporządkowanych par dowolnego typu. Tymczasem widzę dwa rozwiązania:Nieuporządkowana para w Javie

  • HashSet do przechowywania elementów pary
  • klasa Pair z nadpisane hashCode i equals (aby Pair(a, b) i Pair(b, a) równe).

Czy ma to sens? Co byś zasugerował?

+0

Jaki jest twój powód, aby napisać kontener "nieuporządkowanej paryżków dowolnego typu"? –

+2

możliwy duplikat [Co to jest odpowiednik C++ Pair w Javie?] (Http://stackoverflow.com/questions/156275/what-is-the-equivalent-of-the-c-pairl-r-in -java) –

+3

@AndrewLogvinov Można rozważyć na przykład krawędzie nieuporządkowanego wykresu. 'Edge (v1, v2)' jest równe 'Edge (v2, v1)'. – Michael

Odpowiedz

3

W twoim miejscu wprowadziłbym moją własną klasę. Tak długo, jak interesują Cię zestawy tylko dwóch obiektów, używanie HashMap, (która, nawiasem mówiąc, wewnętrznie używa HashMap) lub jakiejkolwiek innej klasy zaprojektowanej dla zestawów arbitralnych cardinality jest marnotrawstwem zasobów i zwiększa niepotrzebną złożoność.

Po prostu utwórz własną klasę z odpowiednimi implementacjami equals() i hashCode(). Posiadanie operacji , a nawet implementacja części interfejsu Set, może również mieć sens.

Jedna ważna uwaga: upewnij się, że dokument klasa obszernie - przynajmniej określić, czy equals() wykonuje tożsamości lub porównania równości dla zawartych przedmiotów, a co do treści zawartych w odniesieniu null ...