Java:ArrayList给出了一个乱码的结果

时间:2015-08-29 02:08:55

标签: java

问题如下: 屏幕上将显示6个单词。这些单词是从列表中随机选择的。当我编写代码时,我没有收到任何错误,但是当我在eclipse中运行它时,我在控制台“package.wordsContainer@659e0bfd”中得到了以下乱码结果。

我做错了什么?

public class wordsContainer {
    Collection<String> wordList = new ArrayList<String>();

    public void wordGroup1() {
        wordList.add("Ant");
        wordList.add("Almond");
        wordList.add("Atom");
        wordList.add("Affair");
        wordList.add("Ample");
        wordList.add("Blue");
        wordList.add("Black");
        wordList.add("Bronze");
        wordList.add("Beauty");
        wordList.add("Beautiful");
        wordList.add("Batter");
        wordList.add("Crazy");
    }


    public Collection<String> getRandomWords() {
        wordGroup1();
        LinkedList<String> wordLinkedList = new LinkedList<String>(wordList);
        ArrayList<String> subList = new ArrayList<String>();

        int i = 0;
        while (i < 6) {
            int index = (int) Math.random() * 10;
            if (!subList.contains(wordLinkedList.get(index))) {
                subList.add(wordLinkedList.get(index));
                i++;
            }
        }
        return subList;
    }
}



public class wordsContainerTest {
    public static void main(String[] args) {
        wordsContainer list1 = new wordsContainer();

        list1.wordGroup1();

        System.out.println(list1);
        System.out.println(list1.getRandomWords());

    }
}

2 个答案:

答案 0 :(得分:6)

它不是对象哈希码的乱码,十六进制表示wordsContainer

该结果来自

   System.out.println(list1); //wordsContainer 

不是来自ArrayList。

为了正常工作,您需要在类wordsContainer

中覆盖toString方法

要明白"package.wordsContainer@659e0bfd"究竟是什么读了我早就写过的答案。

https://stackoverflow.com/a/17878495/1927832

除此之外,请遵循java命名约定,类名以大写字母开头。

答案 1 :(得分:0)

 System.out.println(list1); //wordsContainer 

你不能直接打印出对象,你只需要打印出保存对象的内存中的引用,这就是你得到的奇怪输出。您必须覆盖对象中的toString()方法或打印出您想要的对象的属性。