gpt4 book ai didi

Java 元组/对

转载 作者:行者123 更新时间:2023-12-01 22:50:23 31 4
gpt4 key购买 nike

我的配对类(class):

public class Pair<o,t> {

private o one;
private t two;

public Pair(o one, t two) {
this.one = one;
this.two = two;
}

public o getO() {
return one;
}

public void setO(o one) {
this.one = one;
}

public t getT() {
return two;
}

public void setT(t two) {
this.two= two;
}
}

在我的主应用程序中,我用pair对象填充了一个列表:

List<Pair<Integer, String>> test = new ArrayList<Pair<Integer, String>>();
Pair<Integer, String> pair;

pair.setO(1);
pair.setT("A");
test.add(pair);

pair.setO(2);
pair.setT("B");
test.add(pair);

我希望能够仅通过列表索引获取整数值,例如。 for 循环写出 A、B 等。我该怎么做?在 Java 中是否有更简单的方法来做这样的事情?

最佳答案

正如 @Braj 建议的那样,您可以使用 for-each 循环。

for(Pair<Integer, String> p : test ){
System.out.println(p.getT());
}

但是,由于添加对象的方式,输出实际上是:

B
B

这是因为当您向 ArrayList 添加一个对象时,您实际上是在向该对象添加一个引用,因此当您修改它时,您也会修改存储在 ArrayList 中的对象。 不会创建该对象的单独副本!您需要构造一个新的 Pair 对象才能使其按您的预期工作。

另一个注意事项:你还没有使用构造函数来初始化pair,所以javac会对你大喊大叫。

要解决这两个错误,请将代码更改为:

List<Pair<Integer, String>> test = new ArrayList<Pair<Integer, String>>();
test.add(new Pair<Integer, String>(1, "A"));
test.add(new Pair<Integer, String>(2, "B"));
for(Pair<Integer, String> p : test ){
System.out.println(p.getT());
}

关于Java 元组/对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24813117/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com