Подтвердить что ты не робот

Сохранение пар чисел в java

Как сохранить набор парных номеров в java? Я использую списки или массивы или, возможно, что-то еще?

например. [(1,1), (2,1), (3,5)]

4b9b3361

Ответ 1

Есть несколько вариантов:

Напишите пользовательский класс IntPair

class IntPair {
  // Ideally, name the class after whatever you're actually using 
  // the int pairs *for.*
  final int x;
  final int y;
  IntPair(int x, int y) {this.x=x;this.y=y;}
  // depending on your use case, equals? hashCode?  More methods?
}

а затем создайте IntPair[] или List<IntPair>.

В качестве альтернативы создайте двумерный массив new int[n][2] и обработайте строки как пары.

Java не имеет встроенного класса Pair по нескольким причинам, но наиболее заметным является то, что достаточно легко написать класс, который имеет ту же функцию, но имеет гораздо более просветительные, полезные имена для класс, его поля и его методы.

Если бы мы знали больше о том, что вы на самом деле используете для этого, мы могли бы предоставить более подробные предложения - мы все знаем, что Map может быть уместным.

Ответ 2

class Pair<T> {
    T p1, p2;
    Pair(T p1, T p2) {
        this.p1 = p1;
        this.p2 = p2;
    }

Pair<Integer> pair = new Pair<Integer>(1,2);

int i1 = pair.p1;
int i2 = pair.p2;

Вы также можете ввести геттеры, сеттеры, equals, hashcode и т.д.

Ответ 3

Если вы можете жить с структурами низкого уровня и отчаянно нуждаться в компактной форме "буквальной" формы "набора пар" - это происходит со мной в unit test, когда мне нужен набор светильников - вы можете просто используйте массив массивов:

int[][] squares = {
    { 1, 1 },
    { 2, 4 },
    { 3, 9 }
};

Но имейте в виду, что для такого типа нет семантики - все зависит от правильного использования, компилятор не даст вам предупреждения, если вы наберете squares[0][1], когда вам действительно захотелось squares[1][0].

Ответ 4

Если вам нужно избегать дубликатов, то HashSet будет хорошим выбором, но не будет работать ArrayList.

Class IntPair(){
  int i;
  int j;
}
HashSet<IntPair> set = new HashSet<IntPair>();

или

ArrayList<IntPair> list = new ArrayList<IntPair>();

Ответ 5

Вы можете использовать класс Pair!

    import javafx.util.Pair;

    int x = 23;
    int y = 98;

    Pair<Integer, Integer> pair1 = new Pair<>(6, 7);
    Pair <Integer, Integer> pair2 = new Pair<>(x, y);

Я надеюсь, это поможет вам!