2014-04-06 3 views
-1

일부 코드를보고 있는데, ArrayLists라는이 문제를 발견했습니다. 정규리스트에 반대하는 ArrayLists 사용의 요지는 정확히 무엇입니까? 코드를 보면 메소드 이름 앞에 <T> ArrayList<T>이 있습니다. 이것들은 ArrayLists 이니? 그리고 왜 <T>? 정확히 일반 목록에 반대로 ArrayLists를 사용하는 점은 무엇ArrayList의 요점은 무엇입니까?

class MergeAlgorithm{ 

    //ArrayLists 
    <T> ArrayList<T> merge(ArrayList<T> list1, ArrayList<T> list2, 
      Comparator<T> comp, ArrayList<T> acc){ 
     if(list1.isEmpty()) 
      return append(acc, list2); 
     else if(list2.isEmpty()) 
      return append(acc, list1); 
     else if(comp.compare(list1.get(0), list2.get(0)) <= 0){ 
      acc.add(list1.get(0)); 
      list1.remove(0); 
      return merge(list1, list2, comp, acc); 
     } 
     else{ 
      acc.add(list2.get(0)); 
      list2.remove(0); 
      return merge(list1, list2, comp, acc); 
     } 



    } 



<T> ArrayList<T> append(ArrayList<T> list1, ArrayList<T> list2){ 
    for (T t: list2){ 
     list1.add(t); 
    } 
    return list1; 
} 
} 


class CharComp implements Comparator<Character>{ 
    public int compare(Character c1, Character c2){ 
     return c1.compareTo(c2); 
    } 
} 
+2

'ArrayList'는 단지'List' 인터페이스의 구현입니다; (목록 list = new ArrayList <>();') – fge

+1

Java generics에 대해 알아야합니다. 당신은 을 가지므로 강력한 타입 검사를 가진 어떤 종류의 객체라도리스트를 가질 수 있습니다. – duffymo

답변

2

?

"일반 목록"의 의미에 따라 다릅니다. 당신이 java.util.List을 의미하는 경우

  • 은 다음 포인트는 당신이 List 형식의 인스턴스를 만들 수 없다 ... 그것이 interface 아닌 class이기 때문이다.

  • java.util.LinkedList과 같은 다른 목록 클래스를 의미하는 경우 ... 각기 다른 목록 클래스마다 고유 한 동작/성능 특성이 있음을 인식해야합니다. 예를 들어

    • LinkedList리스트의 시작에서 신속 삽입이 있지만 느린 get(int) 동작 빠른 get을 갖는다 ArrayList

    • ArrayList 클래스에 비해 평균 1 적은 메모리를 사용LinkedList보다 큽니다. 당신이 <T> ArrayList<T>이 방법 이름 앞에


    그리고 당신이 코드를 보면

. 이것들은 ArrayLists 이니? 그리고 <T>

<T>는 일반 mergeappend 방법의 유형 매개 변수를 의미하는 이유. Generics에 대한 Java 튜토리얼 섹션을 읽으면이 코드의 의미를 이해할 수 있습니다.

아니요, 이들은 ArrayLists "이기 때문에 이 아닙니다. 다른 목록 클래스에도 제네릭 형식 매개 변수를 사용해야합니다. List 인터페이스와 모든 표준 목록 클래스는 제네릭 형식입니다.


1 - 그것은 그 공간을 사용하면 측정하는 목록에 도착하는 데 사용되는 작업의 순서에 의존하기 때문에 ArrayList의 공간 사용이 약간 고무입니다. 그러나 최적의 ArrayList을 많이 차지하며은 같은 요소가있는 LinkedList보다 공간이 적습니다. 그리고 이것은 의 경우에도 마찬가지입니다. 유스 케이스도 마찬가지입니다.

관련 문제