ArrayList to Array不显示我想要的方式

时间:2017-09-15 01:12:09

标签: java

    ArrayList<String> nameList = new ArrayList<String>();
    nameList.add("James");
    nameList.add("Joe");
    nameList.add("Josh");
    nameList.add("Bob");
    nameList.add("Billy");
    System.out.println("The names are:\n " + nameList);

    nameList.remove(1);
    System.out.println("Find the index 1 and remove their name from the list:\n "+ nameList);

    nameList.size();
    System.out.println("Currently the ArrayList holds " + nameList.size() +
                        " names after removing the name of index 1" );

    String[] tempArray= new String[nameList.size()];
    tempArray = nameList.toArray(tempArray);

    System.out.println(tempArray); // I want it to display the values of the ArrayList

    }



}

我得到的输出是[Ljava.lang.String; @ 4554617c,当我希望它看起来像这样[James,Josh,Bob,Billy]。编程新手会很感激帮助。

1 个答案:

答案 0 :(得分:0)

有几件事。 首先,这个代码可以减少。

String[] tempArray= new String[nameList.size()];
tempArray = nameList.toArray(tempArray);

可能会成为

String[] tempArray= nameList.toArray(new String[nameList.size()]);

如果我没弄错的话。

其次,ArrayList自动调整大小,无需代码。这是怎么回事。

最后。用Java打印对象的方式是,如果它们不是原色(int,bool,long,char ...),则使用它们的.toString()方法打印它们。在ArrayLists上,此.toString()方法返回列表的漂亮表示。但是数组并没有定义这个方法,而是将它们打印为一些依赖JVM的String。相反,请使用Arrays.toString(tempArray)方法。所以你的print语句看起来像这样:

System.out.println(Arrays.toString(tempArray));

别忘了import java.util.Arrays