在java中存储数字对

Storing number pairs in java

如何在java中存储一组配对数字? 我是使用列表或数组还是其他东西?

例如。 [(1,1),(2,1),(3,5)]


有几个选择:

编写自定义IntPair类

1
2
3
4
5
6
7
8
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

或者,创建一个二维数组new int[n][2],并将这些行视为成对。

由于某些原因,Java没有内置的Pair类,但最引人注目的是编写一个具有相同功能的类很容易,但是对于类来说,它具有更多启发性,有用的名称,字段及其方法。

如果我们更多地了解您实际使用它的内容,我们可能会提供更详细的建议 - 我们知道,Map可能适用于此。


你可以使用班级配对!

1
2
3
4
5
6
7
    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);

我希望这可以帮助你!


如果你需要避免重复,那么HashSet将是一个不错的选择,但它不是一个ArrayList可以工作。

1
2
3
4
5
Class IntPair(){
  int i;
  int j;
}
HashSet<IntPair> set = new HashSet<IntPair>();

要么

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


如果您可以使用低级结构并且迫切需要紧凑形式的"文字"形式的"一对" - 在单元测试中我会遇到这种情况,当我需要一组灯具时 - 您可以简单地使用一个数组数组:

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

但请记住,这样的类型没有语义 - 这一切都取决于正确使用,如果您在真正想要squares[1][0]时键入squares[0][1],编译器不会给您一个警告。


1
2
3
4
5
6
7
8
9
10
11
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;

您还可以输入getter,setter,equals,hashcode等。