Что является эквивалентом пары C ++ < L, R > в Java?

Я использовал новый установщик Eclipse. Мне не понравился путь установки, и я изменил его вручную. После этого я получил сообщение exit = 13.

В файле eclipse.ini с именем -install появилось новое свойство. Мне просто пришлось изменить его с новым местоположением, и это решило эту проблему.

В новом установщике я выбрал D:/eclipse, но IDE была установлена ​​на D:/eclipse/eclipse. Итак, я переместил папку вручную. В следующий раз, когда я попытался открыть eclipse, я получил ошибку выхода. Таким образом, мне пришлось изменить eclipse.ini и установить текущее местоположение:

-install
D:/eclipse
643
задан Brian Tompsett - 汤莱恩 4 March 2019 в 13:04
поделиться

5 ответов

В поток на comp.lang.java.help , Hunter Gratzner дает некоторые аргументы против присутствия Pair конструкция в Java. Основной аргумент, который является классом Pair, не передает семантики об отношениях между двумя значениями (как Вы знаете что "первый" и "второй" средний?).

А лучшая практика должна записать очень простой класс, как тот предложенный Mike, для каждой заявки, которую Вы подали бы Pair класс. Map.Entry пример пары, которые несут ее значение в ее имени.

Таким образом, по-моему, лучше иметь класс Position(x,y), класс Range(begin,end) и класс Entry(key,value), а не дженерик Pair(first,second), который ничего не говорит мне о том, что это, как предполагается, делает.

385
ответ дан Felipe 4 March 2019 в 13:04
поделиться

Это зависит от того, для чего Вы хотите использовать его. Типичная причина сделать так состоит в том, чтобы выполнить итерации по картам, для которых Вы просто делаете это (Java 5 +):

Map<String, Object> map = ... ; // just an example
for (Map.Entry<String, Object> entry : map.entrySet()) {
  System.out.printf("%s -> %s\n", entry.getKey(), entry.getValue());
}
12
ответ дан cletus 4 March 2019 в 13:04
поделиться

HashMap совместимый Парный класс:

public class Pair<A, B> {
    private A first;
    private B second;

    public Pair(A first, B second) {
        super();
        this.first = first;
        this.second = second;
    }

    public int hashCode() {
        int hashFirst = first != null ? first.hashCode() : 0;
        int hashSecond = second != null ? second.hashCode() : 0;

        return (hashFirst + hashSecond) * hashSecond + hashFirst;
    }

    public boolean equals(Object other) {
        if (other instanceof Pair) {
            Pair otherPair = (Pair) other;
            return 
            ((  this.first == otherPair.first ||
                ( this.first != null && otherPair.first != null &&
                  this.first.equals(otherPair.first))) &&
             (  this.second == otherPair.second ||
                ( this.second != null && otherPair.second != null &&
                  this.second.equals(otherPair.second))) );
        }

        return false;
    }

    public String toString()
    { 
           return "(" + first + ", " + second + ")"; 
    }

    public A getFirst() {
        return first;
    }

    public void setFirst(A first) {
        this.first = first;
    }

    public B getSecond() {
        return second;
    }

    public void setSecond(B second) {
        this.second = second;
    }
}
102
ответ дан 22 November 2019 в 21:47
поделиться

Пара была бы хорошей вещью, чтобы быть базовой конструкционной единицей для сложных дженериков, например, это из моего кода:

WeakHashMap<Pair<String, String>, String> map = ...

Это то же самое, что и Tuple Haskell

2
ответ дан 22 November 2019 в 21:47
поделиться

Это Java. Вы должны создать свой собственный класс Pair с описательными классами и именами полей, не говоря уже о том, что вы изобретете колесо, написав hashCode () / equals () или реализовав Comparable снова и снова.

150
ответ дан 22 November 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: