2014-03-19 1 views
-1

나는 현재이 문제에 직면하고있어 : 내가 그렇게 갈망을 포함하는 여러 LinkedList들을 들어있는 LinkedList의,이 : 일부 코드가 실행 된 후자바 정렬 LinkedList의이

LinkedList<LinkedList<Long>>() overalllList = new LinkedList<LinkedList<Long>(); 

를 전체 목록이 채워집니다 다양한 크기의 롱리스트. 내가해야할 일은 overallList를 정렬하여 long에서 가장 작은 것부터 가장 큰 것까지의 목록을 포함하도록하는 것입니다.

나는 그것이 의미가 있기를 바랍니다.

그래서 명확히하기 위해, 나는이 필요합니다 컬렉션을 사용하여이 작업을 수행 할 경우

OverallList: 
    LinkedList<Long> (size 2) - first 
    LinkedList<Long> (size 245) - second 
    LinkedList<Long> (size 1000) - third 
    ...etc 

잘 모르겠어요, 아니면 사용자 정의 비교기 볼 필요합니다. 모든 입력이나 조언을 주시면 감사하겠습니다.

감사

+8

예는'Comparator'을 사용자 정의가 필요하다, 그렇게 할 수있는 방법의 한 예입니다. –

+0

목록에 변경 가능한 요소가 있다고 생각할 필요가 있습니다. 따라서 한 번에 주문할 수 없습니다. –

+0

알려 주셔서 감사합니다. 지금 살펴 보겠습니다. – Tony

답변

3

여기

// A "size()" comparator 
private static Comparator<LinkedList<Long>> comp = new Comparator<LinkedList<Long>>() { 
    @Override 
    public int compare(LinkedList<Long> o1, LinkedList<Long> o2) { 
     return new Integer((o1 == null) ? 0 : o1.size()).compareTo((o2 == null) ? 0 : o2.size()); 
    } 
}; 
public static void main(String[] args) { 
    // LinkedList<LinkedList<Long>>() overalllList = new LinkedList<LinkedList<Long>(); 
    // Note there is an extra() to the left of your overalllList. 
    LinkedList<LinkedList<Long>> overalllList = new LinkedList<LinkedList<Long>>(); 
    LinkedList<Long> list3 = new LinkedList<Long>(); 
    LinkedList<Long> list2 = new LinkedList<Long>(); 
    LinkedList<Long> list1 = new LinkedList<Long>(); 

    for (long i = 0; i < 5; i++) { // 5, or 1000 
     if (i < 2) { 
      list1.add(i); 
     } 
     if (i < 3) { // 3, or 245. 
      list2.add(i); 
     } 
     list3.add(i); 
    } 
    overalllList.add(list3); 
    overalllList.add(list2); 
    overalllList.add(list1); 
    System.out.println("Before: " + overalllList); 

    Collections.sort(overalllList, comp); 
    System.out.println("After: " + overalllList); 
} 

출력

Before: [[0, 1, 2, 3, 4], [0, 1, 2], [0, 1]] 
After: [[0, 1], [0, 1, 2], [0, 1, 2, 3, 4]] 
+0

감사합니다. Elliott, 시도해 보겠습니다. – Tony

2
List<List<Long>> overalllList = new LinkedList<List<Long>>(); 
overalllList.add(Arrays.asList(1L, 2L, 3L)); 
overalllList.add(Arrays.asList(4L, 5L, 6L, 7L, 8L)); 
overalllList.add(Arrays.asList(9L)); 

Collections.sort(overalllList, new Comparator<List<Long>>() { 
    @Override 
    public int compare(List<Long> list1, List<Long> list2) { 
     return list1.size() - list2.size(); 
    } 
});