gpt4 book ai didi

java - 如何仅使用一个实例化对象来存储多个值?

转载 作者:行者123 更新时间:2023-11-30 07:22:45 28 4
gpt4 key购买 nike

我刚刚迷上了 JAVA 中的队列,但我不知道如何使用对象。下面是一段代码,我试图弄清楚如何仅使用一个实例化对象而不是多个对象来存储多个数据。

public class value {

private int A;

public int getA() {
return A;
}

public void setA(int a) {
this.A = a;
}

public String toString()
{
return Integer.toString(A);
}
}

__

Queue<value> q=new PriorityQueue<value>();

value v1 = new value();
value v2 = new value();
value v3 = new value();
value v4 = new value();
value v5 = new value();

v1.setA(1);
v2.setA(7);
v3.setA(5);
v4.setA(6);
v5.setA(2);

q.add(v1);
q.add(v2);
q.add(v3);
q.add(v4);
q.add(v5);


while(!q.isEmpty())
{
System.out.println(q.poll());
}

以上返回:1 2 5 6 7

__

然后我尝试了第二段代码

    Queue<value> q=new PriorityQueue<value>(a);

value v1 = new value();
v1.setA(0);
q.add(v1);
v1.setA(3);
q.add(v1);
v1.setA(5);
q.add(v1);

while(!q.isEmpty())
{
System.out.println(q.poll().getA());
}

第二个返回给我:5,5,5

我需要为我添加的每个新数据实例化该类吗?如果我这样做的话,看起来相当足智多谋

最佳答案

Do i need to instantiate the class for every new data i'm adding?

基本上是的。

在第二个示例中,您将一个对象添加到队列中三次,并在添加期间更改它。不会创建任何副本,因此最终会在队列中出现相同的对象 3 次。

除了没有按照你的预期去做之外,这实际上是一个非常糟糕的主意。当您以改变队列优先级顺序的方式修改队列中的对象时,您可能会破坏数据结构,导致元素以意外的顺序添加和删除。 p>

(有趣的是,javadoc 没有明确提到这一点。但是,通过阅读源代码很明显会发生这种情况。)

关于java - 如何仅使用一个实例化对象来存储多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37273993/

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