Я пытался понять это в течение нескольких часов, но я не могу найти ответ, который работает.
Для полноты я разместил весь код ниже. Если я не переопределю метод toString, я получу представление хэш-кода для объекта.
Я попытался использовать следующее:
public String toString(List<?> list) {
String result = " ";
for (int i = 0; i < list.size(); i++) {
result += " " + list.get(i);
}
return result;
}
Однако это, похоже, не помогает, поскольку я все еще получаю ссылку на хэш-код. Я понимаю, что это потому, что я неправильно переопределяю метод toString; Я получаю сообщение об ошибке, когда включаю аннотацию @Override, но это все, что я смог получить.
Я просмотрел некоторые другие ответы, в которых говорилось, что переопределение метода toString бесполезно в случае списков/коллекций, но не было дано надлежащего руководства для другой альтернативы.
public class WordsContainer {
Collection<String> wordList = new ArrayList<String>();
public void wordGroup1() {
wordList.add("Ant");
wordList.add("Almond");
/// more words
}
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 String toString(List<?> list) {
String result = " ";
for (int i = 0; i < list.size(); i++) {
result += " " + list.get(i);
}
return result;
}
}
public class wordsContainerTest {
public static void main(String[] args) {
wordsContainer list1 = new wordsContainer();
list1.wordGroup1();
System.out.println(list1);
}
}
РЕДАКТИРОВАТЬ :
Извините, я забыл упомянуть, что пытался удалить параметры в методе Override следующим образом:
public String toString() {
LinkedList<String> list = new LinkedList<>()
String result = " ";
for (int i = 0; i < list.size(); i++) {
result += " " + list.get(i);
}
return result;
} Но когда я запускал код, консоль ничего не отображала. Я понимаю, что это потому, что я создал пустой список, но в этот момент я не знал, что еще делать.
toString()
.toString()
должен печатать представление класса, что означает, что список должен быть внутри класса, что означает, что вам не нужно его передавать. - person takendarkk   schedule 29.08.2015wordList
. Кроме того, когда вы публикуете код, публикуйте код, который действительно компилируется. - person JB Nizet   schedule 29.08.2015