你可能想使用compareTo
方法的唯一原因是排序的集合。
您始終可以創建Comparator
並將其傳遞給Collections.sort
調用。
Collections.sort(myList, new Comparator<File>() {
public int compare(File file1, File file2) {
// write your custom compare logic here.
}
});
即使你使用分類收集,如TreeSet
,它已經爲您提供了一個重載的構造函數傳入Comparator
。
/**
* Constructs a new, empty tree set, sorted according to the specified
* comparator. All elements inserted into the set must be <i>mutually
* comparable</i> by the specified comparator: {@code comparator.compare(e1,
* e2)} must not throw a {@code ClassCastException} for any elements
* {@code e1} and {@code e2} in the set. If the user attempts to add
* an element to the set that violates this constraint, the
* {@code add} call will throw a {@code ClassCastException}.
*
* @param comparator the comparator that will be used to order this set.
* If {@code null}, the {@linkplain Comparable natural
* ordering} of the elements will be used.
*/
public TreeSet(Comparator<? super E> comparator) {
this(new TreeMap<E,Object>(comparator));
}
什麼是Java中的匿名*函數? – adarshr
對不起,我的意思是一個匿名類中的函數 – Whimusical
我不確定這會以任何方式工作。 'compareTo'必須是可交換的:'File.compareTo(FileWrapper)'必須與'FileWrapper.compareTo(File)'對稱,但不能控制'File.compareTo(FileWrapper)'。 –