Từ một sạch góc độ đang, nếu những thuộc về nhau, và cấu trúc này có thể tái sử dụng ở một nơi khác, bạn nên tạo một lớp ra trong số họ, và làm cho nó thực hiện tương đương:
public SomeClass implements Comparable<SomeClass> {
private Integer id;
private String name;
private Whatever elseIsNeededHere;
/* getters'n'setters*/
// ******** THOU SHALT NEVER FORGET THY FRIENDS, EQUALS AND HASHCODE, OR ELSE THEY TURN TO BE THY FOES ********
@Override
public boolean equals(Object other) { //do what it takes }
@Override
public int hashCode() { //do what it takes! }
/* actually implement Comparable */
@Override
public int compareTo(SomeClass o) {
//null check, and other bloat left out for sake of brevity
return this.id.compareTo(o.getId());
}
}
Sau đó, bạn có thể có một danh sách duy nhất có chứa những gì thuộc về nhau, và sắp xếp nó thực sự độc đáo:
ArrayList<SomeClass> myList = getMyData();
Collections.sort(myList);
và thể hiện danh sách myList
được sắp xếp theo cách bạn muốn.
Nếu bạn muốn phương pháp comparation khác nhau, bạn có thể sử dụng theo cách khác, bằng cách sử dụng Comparators:
Collections.sort(myList,new Comparator<SomeClass>() {
public int compare(SomeClass a, SomeClass b) { // do what it takes }
});
Oh gosh, tôi thoght tôi là người đầu tiên với cách tiếp cận đó ... – ppeterka
downvoter: chăm sóc để giải thích bỏ phiếu xuống của bạn? –
Wow, downvote không thích hợp nhất bao giờ hết? – ppeterka