2009-08-09 3 views
4

я просто намерение инициализировать итератор общего связанного списка, как, что (общий тип T, кажется, стерт здесь, так как сайт интерпретировать его как тег)как инициализировать итератор

public <T> LinkedList<T> sort(LinkedList<T> list){ 
    Iterator<T> iter = new list.iterator(); 
    ... 

, но я получил ошибка:

«список не может быть решена»

, что случилось?

ответ

6

Чтобы уточнить правильный ответ Николая: вы пытаетесь создать новый объект класса list. Поэтому вы просто хотите позвонить list.iterator() (который, где-то внутри, сам делает new Iterator или что-то в этом роде и возвращает это вам).

Поскольку вы явно используете Java 5 или выше, хотя, лучший способ может быть вместо делать

public <T> LinkedList<T> sort(LinkedList<T> list){ 
    Iterator<T> iter = new list.iterator(); 
    while (iter.hasNext()){ 
     T t = iter.next(); 
     ... 
    } 
} 

вместо этого делать:

public <T> LinkedList<T> sort(LinkedList<T> list){ 
    for (T t : list){ 
     ... 
    } 
} 

Еще лучше, не писать этот метод вообще и вместо этого используют

Collections.sort(list); 
11

Удалить new ключевое слово:

Iterator<T> iter = list.iterator(); 
1

Слово за которым следует новый оператор должен быть именем класса. Здесь list.iterator() уже возвращает объект. Так что в этот момент новое не требуется.