2014-09-25 1 views
0
import javax.swing.*; 
import java.util.*; 
import java.awt.*; 

public class ConverAryToList { 

    public static void main(String[] args) { 


     // TODO Auto-generated method stub 

     String[] stuff = { "people ", "watermelon ", "melons ", "fudge " }; 
     List<String> list = new java.util.LinkedList<String>(
       Arrays.asList(stuff)); 


     list.add("pumpkin"); 
     list.addFirst("first"); 

     stuff = list.toArray(new String[list.size()]); 

     for (String x : stuff) 
      System.out.printf("%s", x); 

    } 

} 

이것은 목록에 요소를 추가하는 간단한 연습입니다. On list.addFirst 내가 얻을 : addFirst (String) 메서드는 형식 목록에 대해 정의되지 않았습니다. 나는 어디로 잘못 갔는가?.addFirst 메소드에서 오류가 발생합니다. 이유가 무엇입니까?

+1

오류의 의미는 무엇이라고 생각하십니까? 그것은 무엇을 의미 할 수 있습니까? –

+0

어떻게 add 메소드가 정의되고 addFirst가 아닌가? 이것은 진보 된 질문이 아닐지 모르지만 나는 여기서 뭔가를 놓치고있다. 나는 정말로 생각이 없다. – Dimoff

+1

당신은 가정을하고 있습니다. 그러지 마. javadoc를 참조하십시오. –

답변

2

참조 유형을 선언하지 않은 List<T> 인터페이스입니다 어떤 addFirst 방법.

LinkedList<String> list = new LinkedList<String>(
       Arrays.asList(stuff)); 

을 또는 당신은 캐스트 할 수 있습니다 :

당신은 LinkedList<String> 명시 적으로 참조 유형을 설정할 수 있습니다

((LinkedList<String>)list).addFirst("first"); 

첫 번째 방법이 바람직하다.

캐스팅은 참조가 새로운 값으로 지정되지 않았다고 가정하기 때문에 약간 위험합니다.

예를 들어 위의 두 문 사이에 listnew ArrayList<String>();으로 할당하면 런타임에 ClassCastException이 표시됩니다.

+0

만약 당신이 말한대로, 나는 LinkedList 타입이 일반적이지 않다. LinkedList 형식의 인수 을 사용하여 매개 변수화 할 수 없습니다. – Dimoff

+0

@nosille는 의미가 없습니다. 수입품을 확인하십시오. 'java.util.LinkedList' **는 ** 제네릭 타입입니다. – Mena

1

방법 이 아닌 LinkedList 클래스에 addFirst 메서드가 있습니다. 여기

:

List<String> list = //whatever 

list을하지 LinkedList

변경을하려면 List로 간주됩니다

LinkedList<String> list = //whatever 
0

LinkedListListDeque의 두 인터페이스를 구현합니다. addFirst 메서드는 Deque 인터페이스에 선언되어 있습니다.

Deque list = new LinkedList<Number>(); 
list.addFirst(3); 
관련 문제