В коллекциях многие методы сортировки или сравнения требуют передачи в качестве одного из параметров объекта, который реализует интерфейс Comparator. Этот интерфейс определяет единственный метод compare(Object obj1,Object obj2), который на основании определенного пользователем алгоритма сравнивает объекты, переданные в качестве параметров. Метод compare должен вернуть:
-1 если obj1 < obj2 0 если obj1 = obj2 1 если obj1 > obj2
Класс Arrays
Статический класс Arrays обеспечивает набор методов для выполнения операций над массивами, таких, как поиск, сортировка, сравнение. В Arrays также определен статический метод public List aList(a[] arr), который возвращает список фиксированного размера, основанный на массиве. Изменения в List можно внести, изменив данные в массиве.
public class Test { public Test() { } public static void main(String[] args) { Test test = new Test(); String[] arr = {'String 1','String 4', 'String 2','String 3'}; test.dumpArray(arr); Arrays.sort(arr); test.dumpArray(arr); int ind = Arrays.binarySearch(arr, 'String 4'); System.out.println( ' Index of 'String 4' = ' + ind); } void dumpArray(String arr[]){ System.out.println(); for(int cnt=0;cnt < arr.length;cnt++) { System.out.println(arr[cnt]); } } }
Класс StringTokenizer
Этот класс предназначен для разбора строки по лексемам ( tokens ). Строка, которую необходимо разобрать, передается в качестве параметра конструктору StringTokenizer(String str). Определено еще два перегруженных конструктора, которым дополнительно можно передать строку-разделитель лексем StringTokenizer(String str, String delim) и признак возврата разделителя лексем StringTokenizer(String str, String delim, Boolean returnDelims).
Разделителем лексем по умолчанию служит пробел.
public class Test { public Test() { } public static void main(String[] args) { Test test = new Test(); String toParse = 'word1;word2;word3;word4'; StringTokenizer st = new StringTokenizer(toParse,';'); while(st.hasMoreTokens()){ System.out.println(st.nextToken()); } } }
Результатом будет:
word1 word2 word3 word4
Класс BitSet
Класс BitSet предназначен для работы с последовательностями битов. Каждый компонент этой коллекции может принимать булево значение, которое обозначает, установлен бит или нет. Содержимое BitSet может быть модифицировано содержимым другого BitSet с использованием операций AND, OR или XOR (исключающее или).
BitSet имеет текущий размер (количество установленных битов), может динамически изменяться. По умолчанию все биты в наборе устанавливаются в 0 (false). Установка и очистка битов в BitSet осуществляется методами set(int index) и clear(int index).
Метод int length() возвращает 'логический' размер набора битов, int size() возвращает количество памяти, занимаемой битовой последовательностью BitSet.
public class Test { public Test() { } public static void main(String[] args) { Test test = new Test(); BitSet bs1 = new BitSet(); BitSet bs2 = new BitSet(); bs1.set(0); bs1.set(2); bs1.set(4); System.out.println('Length = ' + bs1.length()+' size = '+bs1.size()); System.out.println(bs1); bs2.set(1);