Как сохранить набор парных номеров в java? Я использую списки или массивы или, возможно, что-то еще?
например. [(1,1), (2,1), (3,5)]
Как сохранить набор парных номеров в java? Я использую списки или массивы или, возможно, что-то еще?
например. [(1,1), (2,1), (3,5)]
Есть несколько вариантов:
Напишите пользовательский класс 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
может быть уместным.
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 и т.д.
Если вы можете жить с структурами низкого уровня и отчаянно нуждаться в компактной форме "буквальной" формы "набора пар" - это происходит со мной в unit test, когда мне нужен набор светильников - вы можете просто используйте массив массивов:
int[][] squares = {
{ 1, 1 },
{ 2, 4 },
{ 3, 9 }
};
Но имейте в виду, что для такого типа нет семантики - все зависит от правильного использования, компилятор не даст вам предупреждения, если вы наберете squares[0][1]
, когда вам действительно захотелось squares[1][0]
.
Если вам нужно избегать дубликатов, то HashSet будет хорошим выбором, но не будет работать ArrayList.
Class IntPair(){
int i;
int j;
}
HashSet<IntPair> set = new HashSet<IntPair>();
или
ArrayList<IntPair> list = new ArrayList<IntPair>();
Вы можете использовать класс 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);
Я надеюсь, это поможет вам!