java - 使用 .toString 显示 ArrayList

标签 java arraylist

开始编写这个简单的程序后,我遇到了一个逻辑错误,我希望对此进行解释。 toString() 方法当前正在打印 geographylist.GeographyList@15db9742

测试类-

public static void main(String[] args) {

    GeographyList g = new  GeographyList();


    g.addCountry ("Scotland");
    g.addCountry ("Wales");
    g.addCountry ("Ireland");
    g.addCountry ("Italy");

    System.out.println(g.toString());

ArrayList设置

public class GeographyList {

private ArrayList<String> countries;

public GeographyList(){
  countries = new ArrayList<>();
}

public ArrayList<String> getCountries() {
    return countries;
}

public String getCountry(int index){
    return countries.get(index);
}

public void addCountry(String aCountry){
  countries.add(aCountry);
  System.out.println(aCountry + " added.");
}

最佳答案

它打印geographylist.GeographyList@15db9742的原因是因为您没有打印ArrayList。您正在打印一个 GeographyListGeographyList 可能包含一个ArrayList,但这是偶然的。

toString 的默认实现,继承自 the Object class ,就是打印包名geographylist、类名GeographyList和哈希码15db9742

如果您想覆盖此行为,you will need to override the behaviour of toString ,就像 ArrayList 类本身所做的那样。

这可能看起来像这样:

public class GeographyList {
    //...

    @Override
    public String toString()
    {
        return countries.toString();
    }
}

或者,由于您已经能够从类中获取ArrayList,因此您可以调用

System.out.println(g.getCountries().toString());

而不是

System.out.println(g.toString());

关于java - 使用 .toString 显示 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45435489/

相关文章:

java - 将倒数计时器转换为时间的正则表达式

java - 在 Android 上运行 Java 小程序

java - Java 工具用于自动从 jar 名称派生模块名称的算法

java - 从 Spring JdbcTemplate 的 queryForObject 方法返回泛型类型

java - 为什么 List<List<Integer>> list = new ArrayList<ArrayList<Integer>>() ; 是错误的?

java - 为什么我必须同步线程的 ArrayList?

java - 如何在Java中打印字符串的一部分

java - 在java中,我们如何从类中的方法中销毁类的实例

java - 如何立即从内存中删除刚刚从 arraylist 中删除的值

java - 自定义数组列表按位置更改项目