Интерфейс Comparator

В коллекциях многие методы сортировки или сравнения требуют передачи в качестве одного из параметров объекта, который реализует интерфейс Comparator. Этот интерфейс определяет единственный метод compare(Object obj1,Object obj2), который на основании определенного пользователем алгоритма сравнивает объекты, переданные в качестве параметров. Метод compare должен вернуть:

-1 если obj1 < obj20 если obj1 = obj21 если 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( "\nIndex 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()); } }}

Результатом будет:

word1word2word3word4

Класс 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); bs2.set(2); bs1.and(bs2); System.out.println(bs1); }}

Результатом будет:

Length = 5 size = 64{0, 2, 4}{2}

Проанализировав первую строку вывода на консоль, можно сделать вывод, что для внутреннего представления BitSet использует значения типа long.

Класс Random

Класс Random используется для получения последовательности псевдослучайных чисел. В качестве "зерна" применяется 48-битовое число. Если для инициализации Random задействовать одно и то же число, будет получена та же самая последовательность псевдослучайных чисел.

В классе Random определено также несколько методов, которые возвращают псевдослучайные величины для примитивных типов Java.

Дополнительно следует отметить наличие двух методов: double nextGaussian() - возвращает случайное число в диапазоне от 0.0 до 1.0 распределенное по нормальному закону, и void nextBytes(byte[] arr) - заполняет массив arr случайными величинами типа byte.

Пример использования Random:

public class Test { public Test() { } public static void main(String[] args) { Test test = new Test(); Random r = new Random(100); // Generating the same sequence numbers for(int cnt=0;cnt<9;cnt++){ System.out.print(r.nextInt() + " "); } System.out.println(); r = new Random(100); for(int cnt=0;cnt<9;cnt++) { System.out.print(r.nextInt() + " "); } System.out.println(); // Generating sequence of bytes byte[] randArray = new byte[8]; r.nextBytes(randArray); test.dumpArray(randArray); } void dumpArray(byte[] arr) { for(int cnt=0;cnt< arr.length;cnt++) { System.out.print(arr[cnt]); } System.out.println(); }}

Пример 14.24.

Результатом будет:

-1193959466 -1139614796 837415749 -1220615319 -1429538713 118249332 -951589224 -1193959466 -1139614796 837415749 -1220615319 -1429538713 118249332 -951589224 81;-6;-107;77;118;17;93;-98;

Пример 14.25.

Локализация

Класс Locale

Класс Locale предназначен для отображения определенного региона. Под регионом принято понимать не только географическое положение, но также языковую и культурную среду. Например, помимо того, что указывается страна Швейцария, можно указать также и язык - французский или немецкий.

Определено два варианта конструкторов в классе Locale:

Locale(String language, String country)Locale(String language, String country, String variant)

Первые два параметра в обоих конструкторах определяют язык и страну, для которой определяется локаль, согласно кодировке ISO. Список поддерживаемых стран и языков можно получить и с помощью вызова статических методов Locale.getISOLanguages() Locale.getISOCountries(), соответственно. Во втором варианте конструктора указан также строковый параметр variant, в котором кодируется информация о платформе. Если здесь необходимо указать дополнительные параметры, то их требуется разделить символом подчеркивания, причем, более важный параметр должен следовать первым.

Пример использования:

Locale l = new Locale("ru","RU");Locale l = new Locale("en","US","WINDOWS");

Статический метод getDefault() возвращает текущую локаль, сконструированную на основе настроек операционной системы, под управлением которой функционирует JVM.

Для наиболее часто использующихся локалей заданы константы. Например, Locale.US или Locale.GERMAN.

После того как экземпляр класса Locale создан, с помощью различных методов можно получить дополнительную информацию о локали.

public class Test { public Test() { } public static void main(String[] args) { Test test = new Test(); Locale l = Locale.getDefault(); System.out.println(l.getCountry() + " " + l.getDisplayCountry() + " " + l.getISO3Country()); System.out.println(l.getLanguage() + " " + l.getDisplayLanguage() + " " + l.getISO3Language()); System.out.println(l.getVariant() + " " + l.getDisplayVariant()); l = new Locale("ru","RU","WINDOWS"); System.out.println(l.getCountry() + " " + l.getDisplayCountry() + " " + l.getISO3Country()); System.out.println(l.getLanguage() + " " + l.getDisplayLanguage() + " " + l.getISO3Language()); System.out.println(l.getVariant() + " " + l.getDisplayVariant()); }}

Пример 14.26.

Результатом будет:

US United States USAen English eng RU Russia RUSru Russian rusWINDOWS WINDOWS

Пример 14.27.








Дата добавления: 2016-03-22; просмотров: 776;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.009 сек.