2010-01-15 66 views
20

Tôi không thể tìm thấy bất kỳ chức năng sắp xếp nào trong API java cho vectơ. Collections.sort chỉ dành cho List<T> chứ không phải cho Vector<T>.Chức năng nào có thể được sử dụng để sắp xếp Vector?

Tôi không muốn viết chức năng sắp xếp của riêng mình vì tôi nghĩ java nên thực hiện điều này.

Tôi đang tìm một cái gì đó như:

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

Trả lời

27

Theo số API docs, Vector chỉ cần thực hiện List, vì vậy, tôi không bỏ qua vấn đề. Có lẽ sự nhầm lẫn của bạn đã được gây ra bởi vì bạn tuyên bố Vector theo cái cũ Java 1.0 phong cách:

Vector vector = new Vector(); 

thay vì tuyên bố nó aginst giao diện (được coi là thực hành tốt):

List list = new Vector(); 

Bạn có thể như vậy, chỉ sử dụng Collections#sort() để sắp xếp bộ sưu tập, Comparable để xác định hành vi đặt hàng mặc định và/hoặc Comparator để xác định hành vi đặt hàng có thể điều khiển bên ngoài.

Đây là một Sun tutorial về việc sắp xếp các đối tượng.

Đây là một ví dụ khác SO answer với các ví dụ mã đầy đủ.

Điều đó nói rằng, tại sao bạn vẫn gắn bó với lớp học di sảnVector? Nếu bạn có thể, chỉ cần thay thế bằng cải tiến ArrayList được thiết kế để thay thế Vector hơn một thập kỷ trước.

15

Vector thực hiện Danh sách, vì vậy Collections.sort sẽ làm việc.

4

Theo đặc tả Java API cho lớp Vector, nó triển khai giao diện List cần thiết để sử dụng phương thức Collections.sort.

Ngoài ra, để lưu ý, hầu hết sử dụng lớp Vector có thể được thay thế bằng cách sử dụng một trong các triển khai List trong Khung sưu tập Java, chẳng hạn như ArrayList. Lớp Vector được đồng bộ hóa, do đó, trừ khi có nhu cầu thực sự cho phép truy cập đồng bộ, nên sử dụng một trong các triển khai List khác.

2

Vector là một Danh sách

1

Collections.sort (nameOfTheVectorToBeSorted); hãy thử điều này trên vectơ của bạn, điều đó sẽ được sắp xếp.

0

Collections.sort(vector_name)

Nó sẽ sắp xếp các vector tại chỗ, do đó bạn không cần phải gán kết quả của lệnh trên trở lại vector.

Điều này hoạt động vì Vectơ là triển khai Danh sách.

1

Đừng quên để thêm implements Comparable<> trong lớp học của bạn:

public class XXXX 
    implements Comparable<XXXX> { 

} 

Và để xác định lại compareTo() trong lớp học của bạn của các loại đối tượng được lưu trữ trong vector của bạn.

Tôi cũng gặp vấn đề này, IDE Eclipse đã cho tôi biết rằng Collection.sort() chỉ dành cho List<T>. Không thể làm cho nó hoạt động cho đến khi tôi làm những gì tôi vừa nói.

Các vấn đề liên quan