2015-11-13 4 views
0
public static <T> List<T> arrayListReverse(List<T> lst) { 
    ArrayList reversed= new ArrayList(); 
    for (int i=lst.size()-1;i>=0;i--){ 
    <T> t= lst.get(i); 
    reversed.add(t); 
    } 
return reversed; 
} 

Я хочу, чтобы иметь возможность вернуть список, который является версией исходного текста в обратном порядке. Он должен иметь возможность работать для любого типа. Я продолжаю получать ошибки, когда дело доходит до t = input.get (i); Edit: Я хотел бы использовать только интерфейс СпискаОбратный общий список?

+4

Просто напишите 'T' и не' ' в' т = lst.get (я); '. Это связано с тем, что тип переменной - 'T'. – Tunaki

+7

Если вы не используете упражнение, используйте 'Collections.reverse'. –

+0

Спасибо. Тем не менее, я получаю это: обнаружено 2 предупреждения: Предупреждение: непроверенный вызов для добавления (E) в качестве члена необработанного типа java.util.ArrayList Предупреждение: необработанное преобразование требуется: java.util.List найдено: java.util. ArrayList - – pythonbeginner4556

ответ

3

<T> должен быть T:

public static <T> List<T> arrayListReverse(List<T> lst) { 
    ArrayList reversed= new ArrayList(); 
    for (int i=lst.size()-1;i>=0;i--){ 
     T t = lst.get(i); 
     reversed.add(t); 
    } 
    return reversed; 
} 
+0

Спасибо. Тем не менее, я получаю это: 2 предупреждений найдено: Предупреждения: непроверенный вызов, чтобы добавить (E) в качестве члена сырьевого типа java.util.ArrayList Внимания: требуется остановить преобразование : java.util.List найдено : java.util.ArrayList – pythonbeginner4556

+0

nvm вычислил его – pythonbeginner4556

+0

Вам просто нужен обратный список или обратная строка в перевернутом списке тоже? –

0

Вы также можете использовать это:

ArrayList reversed = new ArrayList(); 
reversed=Collections.reverse(startArray); 

Documentation:

общественности статической void reverse (Список списка)

Изменяет порядок элементов в указанном списке.

Этот метод работает в линейном режиме.

Параметры:

список - список, элементы которого должны быть обращены вспять.

Броски:

UnsupportedOperationException - если указанный список или его список-итератор не поддерживает операцию набора.

4
public static <T> List<T> arrayListReverse(List<T> lst) { 
    Collections.reverse(lst); 
    return lst; 
} 
1

В коде <T> t = должно быть просто T t =, но вы также можете использовать for-each loop и добавить к передней части reversed как вы итерацию вперед. И вы не должны использовать raw types (вы не указали общий для reversed), и вы могли бы использовать алмазный оператор <>. И вы можете инициализировать свой выходной список с тем же начальным размером, что и ваш ввод. Что-то вроде

public static <T> List<T> arrayListReverse(final List<T> lst) { 
    List<T> reversed = new ArrayList<>(lst.size()); 
    for (T t : lst) { 
     reversed.add(0, t); 
    } 
    return reversed; 
} 
Смежные вопросы