【问题标题】:How to add objects to ArrayList from main? [duplicate]如何从 main 向 ArrayList 添加对象? [复制]
【发布时间】:2017-06-13 17:39:48
【问题描述】:

所以我有一个名为 Persons 的类,当在 main 中创建时,它有一个添加 Person 对象的方法。

import java.util.*;

public class Persons {

public ArrayList<Person> personsList = new ArrayList<Person>();

   public boolean addPerson(Person newPerson) {
       personsList.add(newPerson);
       return true;
   }
}

这是我的主要方法

import java.util.*;

public class testPersons {

public static void main(String[] args) {

Persons persons = new Persons();

    Address person1Address = new Address(xxx, "xxx", "xxx", "CA", "xxx");
    Address person1JobAddress = new Address(1542, "High St", "Santa Cruz", "CA", "94063");
    ArrayList<String> person1Phone = new ArrayList<String>();
    person1Phone.add("xxx-xxx-xxx");
    Job person1Job = new Job("Teacher", 25000.00, person1JobAddress);
    Person person1 = new Person("xxxxxxx", "San Mateo", 'M', person1Address, person1Job, person1Phone);

    persons.addPerson(person1);

    System.out.println(persons);
   }
}

所以我的问题是,“如何将对象 Persons1 添加到 Persons 类的 arrayList 中?”它确实编译,但是当我运行它时,我得到了奇怪的胡言乱语。是我的 Persons 类中缺少一些东西吗?还是我不能像以前那样打印 ArrayList 中的对象?

【问题讨论】:

  • 打印一个对象,默认情况下,只会打印该对象的hashCode()。如果你想让它遍历对象并打印它包含的所有对象,你需要编写代码来做到这一点。
  • 您正在打印Persons 的“默认”结果。一般的建议是覆盖toString,我个人觉得这是个坏主意,toString 应该保留用于调试。在您的情况下,您可以只迭代 personsList
  • 到底为什么要保留toString() 用于调试?

标签: java object arraylist main


【解决方案1】:

确保所有与Person 相关的类,包括Person,都覆盖了默认的toString()。

当你 System.out.println(persons) 时,会发生这种情况:

  • ArrayList 中的Person 对象被一一调用。
  • 对于每个Person 对象,都会调用其toString() is 方法。如果toString() 未被覆盖,则Object(默认)toString 将被调用。因此,“奇怪的胡言乱语”。您需要通过覆盖 toString() 来告诉 java 您想展示什么样的“演示文稿”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 2021-05-26
    • 2019-02-18
    相关资源
    最近更新 更多