2010-01-15 5 views
20

자바 API에서 벡터 정렬 기능을 찾을 수 없습니다. Collections.sortList<T>에만 해당하며 Vector<T>에는 적용되지 않습니다.벡터를 정렬하는 데 사용할 수있는 함수는 무엇입니까?

Java가 이것을 구현해야한다고 생각하기 때문에 필자는 내 자신의 정렬 함수를 작성하고 싶지 않습니다. 벡터 목록을 구현

class ClassName implements Comparator<ClassName> .. 
ClassName cn = ..; 
sort(cn); 

답변

27

API docs에 따르면 Vector은 단지 List을 구현하므로 문제는 없습니다.

Vector vector = new Vector(); 

대신 인터페이스 맞아야을 선언 (고려하는 것이 좋습니다) : 당신은 기존의 자바 1.0 스타일에 따라 Vector 선언 때문에 어쩌면 당신의 혼란이 발생했다

List list = new Vector(); 

을 당신은 이렇게 할 수있는 단지 Collections#sort()을 사용하여 컬렉션을 정렬하고 기본 순서 동작을 정의하는 Comparable 및 외부 제어 가능한 정렬 동작을 정의하는 Comparator을 사용합니다.

개체 주문에 대해서는 Sun tutorial입니다.

다른 코드 예는 SO answer입니다.

그렇다면 왜 아직도 기존Vector 클래스를 고수하고 있습니까? 가능한 경우 10 년 전에 Vector 대체품으로 설계된 향상된 ArrayList으로 교체하십시오.

15

가,은, Collections.sort이 작동 할 수 있도록 :

내가 좋아하는 뭔가를 찾고 있어요.

4

Vector 클래스의 Java API 사양에 따라 Collections.sort 메서드를 사용하는 데 필요한 List 인터페이스가 구현됩니다.

또한 대부분의 경우에 Vector 클래스는 ArrayList과 같이 Java Collections Framework에서 List 구현 중 하나를 사용하여 대체 할 수 있습니다. Vector 클래스가 동기화되므로 동기화 된 액세스가 실제로 필요하지 않으면 다른 List 구현 중 하나를 사용해야합니다.

1

은, Collections.sort (nameOfTheVectorToBeSorted)이다; 당신의 벡터에서 이것을 시도해보십시오, 그것은 정렬 될 것입니다. 다시 벡터로 위의 명령의 결과를 할당 할 필요가 없습니다

0

Collections.sort(vector_name)

그것은, 장소에 벡터를 정렬 할 수 있습니다.

벡터가 목록의 구현이기 때문에 작동합니다.

public class XXXX 
    implements Comparable<XXXX> { 

} 

을 그리고 당신의 벡터에 저장된 객체 타입의 클래스에 compareTo()를 다시 정의 :

1

는 클래스에 implements Comparable<>을 추가하는 것을 잊지 마십시오.

이 문제도 발생했습니다. Eclipse IDE는 Collection.sort()List<T>에만 해당한다고 말했습니다. 방금 말한 것을하기 전까지는 작동하지 못했습니다.

관련 문제