Java 试图从arraylist打印信息,但我想我得到的是内存
这是我的代码Java 试图从arraylist打印信息,但我想我得到的是内存,java,Java,这是我的代码 public static void main(String[] args) { ArrayList<Event> pairs = new ArrayList<Event>(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i = 0; i < n; i++) {
public static void main(String[] args)
{
ArrayList<Event> pairs = new ArrayList<Event>();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++)
{
int x = sc.nextInt();
int y = sc.nextInt();
pairs.add(new Event(x, y));
}
Collections.sort(pairs);
for(int i = 0; i < pairs.size(); i++)
{
System.out.println(pairs.get(i));
}
}
会正确排序,但我想打印出来。当我尝试打印它时,虽然我得到了这些值作为回报
C:\Users\Kneer\Documents\CS2\SCroll>java Main < test.in
Main$Event@5a01ccaa
Main$Event@71c7db30
Main$Event@19bb089b
Main$Event@4563e9ab
C:\Users\Kneer\Documents\CS2\SCroll>java Main
我是否错误地遍历了Arraylist信息?我认为您的
事件
类没有任何toString()
实现。如果添加它,它应该打印toString()
实现打印的任何内容
如果查看java.lang.Object
toString()
实现,就会清楚为什么要打印这些十六进制值-
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
因此,解决方案是重写
toString()
方法,并将自定义格式的对象作为字符串返回。重写Event.toString()方法或创建一个您可以访问的eventToString(Event evt)方法
public static String eventToString(Event evt) {
return "Event["+evt.x +"," +evt.y+"]";
}
然后您可以在当前代码中使用它:
for(int i = 0; i < pairs.size(); i++) {
System.out.println(eventToString(pairs.get(i)));
}
for(int i=0;i
什么是事件
类?您可能希望向其添加.toString
方法(或x
和y
的getter,并使用它们)。请提供一个。您正在打印一个对象,该对象将打印“ObjectName@HashCode“(支票)
for(int i = 0; i < pairs.size(); i++) {
System.out.println(eventToString(pairs.get(i)));
}