在java中存储数字对

时间:2012-04-19 18:29:29

标签: java

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

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

6 个答案:

答案 0 :(得分:10)

有几个选择:

编写自定义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可能适用于此。

答案 1 :(得分:0)

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等。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

如果你需要避免重复,那么HashSet将是一个不错的选择,但它不会起作用。

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

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

答案 4 :(得分:0)

您可以使用配对类!

    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);

希望对您有所帮助!

答案 5 :(得分:0)

方式一:使用 javafx.util.Pair 类

Pair<Integer> myPair1 = new Pair<Integer>(10,20);
Pair<Integer> myPair2 = new Pair<Integer>(30,40);
HashSet<Pair<Integer>> set = new HashSet<>(); // Java 8 and above
set.add(myPair1);
set.add(myPair2);

方式 2:使用大小为 2 的 int[]

int[] myPair1 = new int[] {10,20}; // myPair1[0]=10 , myPair[1] = 20
int[] myPair2 = new int[] {30,40};
HashSet<int[]> set = new HashSet<>(); // Java 8 and above

方式 3:将配对转换为单个数字

int myPair1 = 10 * 1000 + 20; 
// int first = myPair1 / 1000; second = myPair2 % 1000;
int myPair2 = 30 * 1000 + 40;
HashSet<Integer> set = new HashSet<>();
set.add(myPair1);
set.add(myPair2);

方式 4:在方式 2 中使用 ArrayList 而不是 int[]

方式 5:内部使用 HashSet 和 Pair 的自定义类