2013-12-03 6 views
1

Я пытаюсь создать метод преобразования связанного списка в arraylist.convert linklist to arraylist

public ArrayList<Integer> toList(){ 
    //Node node; 
    Node current = node; 
    while(current != null){ 
     current = current.next; 
     array.add(current.val); 
    } 
} 

и он показывает ошибку ниже

no suitable method found for add(Object) 
method ArrayList.add(int,Integer) is not applicable 
    (actual and formal argument lists differ in length) 
method ArrayList.add(Integer) is not applicable 
    (actual argument Object cannot be converted to Integer by method invocation conversion) 

Я в настоящее время использую JDK 1.7, который из того, что я нашел в этом форуме, JDK 1.7 должно быть хорошо с этим вопросом. В чем проблема?

ответ

3

current.val набирается, как Object тогда как метод ожидает добавить Integer. Либо вам нужно бросить, либо вам нужно ввести Node с использованием дженериков, чтобы гарантировать, что node.val является целым.

4

node.val имеет тип Object, а add ожидает Integer. Либо изменить тип node.val к Integer (или сделать его родовое), привести значение к Integer или изменить ArrayList к ArrayList<Object>

1

Я предполагаю, что «узел» относится к заголовку связанного списка. Не имеет прямого отношения к вашей проблеме, но ваша итерация неверна. Сначала вы повторяете текущий, затем вы берете его значение. Таким образом, вы потеряли значение первого элемента. Вы должны добавить сначала, затем итерацию к следующему.