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

74
10

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

public Collection<String> Shuffle()

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

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

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

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 лет, 7 месяцев назад
85

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

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

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

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

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

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

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

ответил(а) 2014-06-30T16:23:00+04:00 6 лет, 7 месяцев назад
-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 лет, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

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