在方法queueAnalysis
中,当我命令打印 System.out.println("Original: " + queue + "\n");
时 System.out.println("colados: " + names + "\n");
,
System.out.println("Cola final: " +queue);
它给我作为输出direcciones de memoria
,null
并且direcciones de memoria
,我已经尝试应用 aiterator
并应用类类型转换Customer
,但即便如此,它仍然继续提供内存地址作为输出。为什么?,
我该如何解决这个问题?
class Customer {
String name;
int ticket;
Customer(String name, int ticket) {
this.name = name;
this.ticket = ticket;
}
String getName() {
return name;
}
int getTicket() {
return ticket;
}
}
public class Main {
public static void main(String[] args) {
Queue<Customer> queue = new LinkedList<>();
queue.add(new Customer("a1", 1));
queue.add(new Customer("a2", 2));
queue.add(new Customer("a3", -1));
queue.add(new Customer("a4", -1));
queueAnalysis(queue);
}
public static void queueAnalysis(Queue<Customer> queue) {
System.out.println("Original: " + queue + "\n");
String names[] = null;
int cant = 0;
int tam = queue.size();
for (int i = 0; i < tam; i++) {
if (queue.peek().getTicket() == -1) {
names[i] = queue.peek().getName();
cant++;
queue.poll();
}
}
System.out.println("colados: " + names + "\n");
System.out.println("Cola final: " +queue);
//Customer c;
for (Iterator it = queue.iterator(); it.hasNext();) {
System.out.println((Customer) it.next());
}
}
}
您不能直接打印 arrayList 或向量:
如果您想要显示对象的名称或其他内容,只需覆盖Customer类的ToString()方法。
除了@Edu3D 给出的答案之外,您还必须更改从队列和
fila
最后一个队列中获取数据的方式,这是因为您没有通过索引访问队列,并且当您访问队列时,peek()
或者poll()
它总是在对象上是在head
de行,这里我修改方法这仅在您进行@Edu3D 提到的更改以覆盖
toString()
类方法时才有效Customer