在HashTable

时间:2017-05-28 21:39:05

标签: java hashtable

我做了像这样的HashTable:

Hashtable<Integer, Pair> resul = new Hashtable<Integer, Pair>();

int largo, row, col;

当“Pair”是我的类来存储2个Ints时,它看起来像这样:

public class Pair<T, U> {

    public final T t;
    public final U u;

    public Pair(T t, U u) {
        this.t = t;
        this.u = u;
    }
}

所以我在HasTable上添加了元素:

resul.put(largo, new Pair(row, col + 1));

现在我需要一对数字(整数)以便我可以显示它们,我如何获得这些数字?

我想要类似的东西:

if (resul.containsKey(0)) {
   //Print my "Pair" numbers here
   //or better: Print my first number here
   //Print my second number here
}

1 个答案:

答案 0 :(得分:2)

您可以在Hashtable中访问您的对象,只需按键值

调用它
public synchronized V get(Object key);

示例:

public static void main(String[] args) {
    Hashtable<Integer, Pair> result = new Hashtable<Integer, Pair>();

    result.put(1, new Pair(1, 1 + 1));

    if (result.containsKey(1)) {
        Pair pair = result.get(1);
        System.out.println(pair.t);
        System.out.println(pair.u);
    }
}

更好的方法是让实例变量在类中保持私有,并使用getter:

class Pair<T, U> {

    private final T t;
    private final U u;

    public Pair(T t, U u) {
        this.t = t;
        this.u = u;
    }

    public T getT() {
        return t;
    }

    public U getU() {
        return u;
    }
}

因此:

public static void main(String[] args) {
    Hashtable<Integer, Pair> result = new Hashtable<Integer, Pair>();

    result.put(1, new Pair(1, 1 + 1));

    if (result.containsKey(1)) {
        Pair pair = result.get(1);
        System.out.println(pair.getT());
        System.out.println(pair.getU());
    }
}