2013-05-15 4 views
0

itemsCountedItem[]으로 변환하려면 어떻게해야합니까? 그게 내가 public CountedItem<E>[] getSortedArray() (마지막 방법)에서이 작업을 수행 할 수 외에제네릭 목록을 제네릭 배열로 변환

import java.util.LinkedList; 
import java.util.Collections; 
import java.util.Comparator; 

public class CountedSet<E> 
{ 
    LinkedList<CountedItem<E>> items = new LinkedList<CountedItem<E>>(); 
    private final Comparator<CountedItem<E>> comparator = new Comparator<CountedItem<E>>() 
    { 
     @Override 
     public int compare(final CountedItem<E> o1, final CountedItem<E> o2) 
     { 
      return Integer.valueOf(o1.getCount()).compareTo(Integer.valueOf(o2.getCount())); 
     } 
    }; 

    public CountedSet() 
    { 
    } 

    public CountedItem<E> add(E item) 
    { 
     CountedItem<E> currentItem = null; 
     for (CountedItem<E> listItem : items) 
      if (listItem.getItem().equals(item)) 
      { 
       currentItem = listItem; 
       break; 
      } 

     if (currentItem != null) 
      currentItem.increment(); 
     else 
     { 
      currentItem = new CountedItem<E>(item); 
      items.add(currentItem); 
     } 

     return currentItem; 
    } 

    public CountedItem<E>[] getSortedArray() 
    { 
     Collections.sort(items, this.comparator); 

     CountedItem<E>[] array = items.toArraySomeHow(); 
     return array; 
    } 
} 

난 당신을 제공하기 위해 많은 세부 사항이 없습니다. 또한 이렇게하면 오류가 발생합니다.

CountedItem<E>[] array = items.toArray(new CountedItem<E>[items.size()]); 
    // ERROR - Cannot create a generic array of CountedItem<E>.^
+0

java는 일반 배열을 지원하지 않습니다. – hoaz

+0

그리고이 방법은 없습니다. – hetelek

+0

http://stackoverflow.com/questions/3617863/java-convert-generic-linkedlist-to-generic-array –

답변

4

items.toArray(new CountedItem[items.size()]);은 경고와 함께 사용할 수 있습니다. 그러나이 수정 후에는 코드가 깨끗하고 형식이 안전하지 않습니다.

또한 @SuppressWarnings("unchecked")을 추가하면 경고 메시지가 표시되지 않습니다.

그것은 당신이 일반적인 배열을 할 수 있다고 생각하지 않습니다

-1

을 :) 당신은 살 수 있지만, 일반적인 ArrayList를 수행 할 수 있는지 여부에 달려있다. 왜 도움이 될 수있는 배열 (링크 된 목록의 속도?)이 필요한지에 따라 다릅니다. ArrayList는 내부적으로 Object[]으로 구현됩니다. 아마 이것과 비슷한 것?

public CountedItem<E>[] getSortedArray() 
{ 
    Collections.sort(items, this.comparator); 

    return new ArrayList<E>(items); 
}