Есть веская причина, по которой в Java нет Pair<L,R>? Что было бы эквивалентно этой конструкции C ++? Я бы предпочел избежать переопределения моей собственной.
Кажется, что 1.6 предоставляет нечто подобное (AbstractMap.SimpleEntry<K,V>), но это выглядит довольно запутанно.
Переведено автоматически
Ответ 1
В потоке на comp.lang.java.help Хантер Гратцнер приводит несколько аргументов против наличия Pair конструкции в Java. Основной аргумент заключается в том, что класс Pair не передает никакой семантики о взаимосвязи между двумя значениями (откуда вы знаете, что означают "первое" и "второе"?).
Лучшая практика - написать очень простой класс, подобный тому, который предложил Майк, для каждого приложения, которое вы бы создали из Pair класса. Map.Entry это пример пары, значение которой отражено в ее названии.
Подводя итог, на мой взгляд, лучше иметь class Position(x,y), a class Range(begin,end) и a class Entry(key,value), а не generic Pair(first,second), который ничего не говорит мне о том, что он должен делать.
Ответ 2
Это Java. Вы должны создать свой собственный класс Pair с описательными именами классов и полей, и не обращать внимания на то, что вам придется изобретать велосипед, снова и снова создавая hashCode() / equals() или реализуя Comparable.
Ответ 3
Класс пары , совместимый с HashMap:
publicclassPair<A, B> { private A first; private B second;