Программирование на Java
Шрифт:
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
Этот
Разделителем лексем по умолчанию служит пробел.
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);
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, в котором кодируется информация о платформе. Если здесь необходимо указать дополнительные параметры, то их требуется разделить символом подчеркивания, причем, более важный параметр должен следовать первым.