как вернуть коллекцию

71
9

Я хотел бы вернуть эту коллекцию, но это дает мне ошибку:

public Collection<String> Shuffle()

{
return Collections.shuffle(Arrays.asList(FullDeck));
}

FullDeck - это массив строк

спросил(а) 2014-06-30T16:18:00+04:00 6 лет, 3 месяца назад
1
Решение
98

Collections.shuffle() ничего не возвращает. Вам нужно будет:

public Collection<String> shuffle() {
List<String> list = Arrays.asList(FullDeck);
Collections.shuffle(list);
return list;
}

Обратите внимание, что, как указывает @Seelenvirtuose, операция shuffle() также изменит базовый массив. Это означает, что вы можете просто позволить вашему методу shuffle() иметь тип метода void и сразу обращаться к массиву FullDeck. Это позволит вам сократить этот метод до одной строки: Collections.shuffle(Arrays.asList(FullDeck));

ответил(а) 2014-06-30T16:21:00+04:00 6 лет, 3 месяца назад
81

Метод shuffle() возвращает void, поэтому вам не нужно возвращать значение. Вы можете переписать код следующим образом. Обратите внимание, что этот метод является побочным эффектом для изменения исходного списка FullDeck.

public void shuffle()
{
Collections.shuffle(Arrays.asList(fullDeck));
}

Также обратите внимание, что методы и переменные в Java должны начинаться с строчных букв.

ответил(а) 2014-06-30T16:21:00+04:00 6 лет, 3 месяца назад
40

Collection.shuffle() ничего не возвращает. Скорее, он изменяет список аргументов. Прочтите документацию здесь.

Скорее используйте это:

    List<String> list = Arrays.asList(FullDeck);
// Shuffle the list
Collections.shuffle(list);
return list;

ответил(а) 2014-06-30T16:23:00+04:00 6 лет, 3 месяца назад
-7

Вам гораздо лучше вернуть только простой старый список или, еще лучше, коллекцию, вот так:

// after: method returns a Collection reference
private Collection getList()
{
Collection list = new LinkedList();
list.add("Hello");
list.add("world");
return list;
}

ответил(а) 2014-06-30T16:22:00+04:00 6 лет, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема