Философия Java


Сравнение элементов массива - часть 3


Класс Collections (который мы рассмотрим немного позже) содержит только Comparator, который меняет порядок сортировки на обратный естественному. Это легко может быть применено к CompType:

//: c09:Reverse.java

// Collecions.reverseOrder() Comparator.

import com.bruceeckel.util.*; import java.util.*;

public class Reverse { public static void main(String[] args) { CompType[] a = new CompType[10]; Arrays2.fill(a, CompType.generator()); Arrays2.print("before sorting, a = ", a); Arrays.sort(a, Collections.reverseOrder()); Arrays2.print("after sorting, a = ", a); } } ///:~

Вызов Collections.reverseOrder( ) производит ссылку на Comparator.

В качестве второго примера Comparator сравнивает объекты CompType, основываясь на их значениях j, а не на их значениях i:

//: c09:ComparatorTest.java

// Реализация Comparator для класса.

import com.bruceeckel.util.*; import java.util.*;

class CompTypeComparator implements Comparator { public int compare(Object o1, Object o2) { int j1 = ((CompType)o1).j; int j2 = ((CompType)o2).j; return (j1 < j2 ? -1 : (j1 == j2 ? 0 : 1)); } }

public class ComparatorTest { public static void main(String[] args) { CompType[] a = new CompType[10]; Arrays2.fill(a, CompType.generator()); Arrays2.print("before sorting, a = ", a); Arrays.sort(a, new CompTypeComparator()); Arrays2.print("after sorting, a = ", a); } } ///:~

Метод compare( ) должен возвращать отрицательное, нулевое или положительное значение, если первый аргумент меньше, равен или больше второго, соответственно.




Начало  Назад  Вперед



Книжный магазин