Чтение онлайн

на главную - закладки

Жанры

Программирование на Java

Вязовик Н.А.

Шрифт:

}

}

public Test {

}

public static void main(String[] args) {

Test t = new Test;

TestObject to = null;

HashMap hm = new HashMap;

hm.put("Key1",t.new TestObject("Value 1"));

hm.put("Key2",t.new TestObject("Value 2"));

hm.put("Key3",t.new TestObject("Value 3"));

to = (TestObject)hm.get("Key1");

System.out.println("Object value for Key1 = " + to.getText + "\n");

System.out.println("Iteration over entrySet");

Map.Entry entry = null;

Iterator it = hm.entrySet.iterator;

// Итератор для перебора всех точек входа

в Map

while(it.hasNext) {

entry = (Map.Entry)it.next;

System.out.println("For key = " + entry.getKey + " value = " + ((TestObject)entry.getValue).getText);

}

System.out.println;

System.out.println("Iteration over keySet");

String key = "";

// Итератор для перебора всех ключей в Map

it = hm.keySet.iterator;

while(it.hasNext) {

key = (String)it.next;

System.out.println( "For key = " + key + " value = " +

((TestObject)hm.get(key)).getText);

}

}

}

Пример 14.19.

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

Object value for Key1 = Value 1

Iteration over entrySet

For key = Key3 value = Value 3

For key = Key2 value = Value 2

For key = Key1 value = Value 1

Iteration over keySet

For key = Key3 value = Value 3

For key = Key2 value = Value 2

For key = Key1 value = Value 1

Пример 14.20.

java.util.TreeMap - расширяет класс AbstractMap и реализует интерфейс SortedMap. TreeMap содержит ключи в порядке возрастания. Используется либо натуральное сравнение ключей, либо должен быть реализован интерфейс Comparable. Реализация алгоритма поиска обеспечивает логарифмическую зависимость времени выполнения основных операций ( containsKey, get, put и remove ). Запрещено применение null значений для ключей. При использовании дубликатов ключей ссылка на объект, сохраненный с таким же ключом, будет утеряна. Например:

public class Test {

public Test {

}

public static void main(String[] args) {

Test t = new Test;

TreeMap tm = new TreeMap;

tm.put("key","String1");

System.out.println(tm.get("key"));

tm.put("key","String2");

System.out.println(tm.get("key"));

}

}

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

String1

String2

Класс Collections

Класс Collections является классом-утилитой и содержит несколько вспомогательных методов для работы с классами, обеспечивающими различные интерфейсы коллекций. Например, для сортировки элементов списков, для поиска элементов в упорядоченных коллекциях и т.д. Но, пожалуй, наиболее важным свойством этого класса является возможность получения синхронизированных вариантов классов-коллекций. Например, для получения синхронизированного варианта Map можно использовать следующий подход:

HashMap hm = new HashMap;

:

Map syncMap = Collections.synchronizedMap(hm);

:

Как уже отмечалось ранее, начиная с JDK 1.2, класс Vector реализует интерфейс List. Рассмотрим пример сортировки элементов, содержащихся в классе Vector.

public class Test {

private class TestObject {

private String name = "";

public TestObject(String name) {

this.name = name;

}

}

private class MyComparator implements Comparator {

public int compare(Object l,Object r) {

String left = (String)l;

String right = (String)r;

return -1 left.compareTo(right);

}

}

public Test {

}

public static void main(String[] args) {

Test test = new Test;

Vector v = new Vector;

v.add("bbbbb");

v.add("aaaaa");

v.add("ccccc");

System.out.println("Default elements order");

test.dumpList(v);

Collections.sort(v);

System.out.println("Default sorting order");

test.dumpList(v);

System.out.println("Reverse sorting order with providing imlicit comparator");

Collections.sort(v,test.new MyComparator);

test.dumpList(v);

}

private void dumpList(List l) {

Iterator it = l.iterator;

while(it.hasNext) {

System.out.println(it.next);

}

}

}

Пример 14.21.

Класс Properties

Класс Properties предназначен для хранения набора свойств (параметров). Методы

String getProperty(String key)

String getProperty(String key,

String defaultValue)

позволяют получить свойство из набора.

С помощью метода setProperty(String key, String value) это свойство можно установить.

Метод load(InputStream inStream) позволяет загрузить набор свойств из входного потока (потоки данных подробно рассматриваются в лекции 15). Как правило, это текстовый файл, в котором хранятся параметры. Параметры - это строки, которые представляют собой пары ключ/значение. Предполагается, что по умолчанию используется кодировка ISO 8859-1. Каждая строка должна оканчиваться символами \r,\n или \r\n. Строки из файла будут считываться до тех пор, пока не будет достигнут его конец. Строки, состоящие из одних пробелов, или начинающиеся со знаков ! или #, игнорируются, т.е. их можно трактовать как комментарии. Если строка оканчивается символом /, то следующая строка считается ее продолжением. Первый символ с начала строки, отличный от пробела, считается началом ключа. Первый встретившийся пробел, двоеточие или знак равенства считается окончанием ключа. Все символы окончания ключа при необходимости могут быть включены в название ключа, но при этом перед ними должен стоять символ \. После того, как встретился символ окончания ключа, все аналогичные символы будут проигнорированы до начала значения. Оставшаяся часть строки интерпретируется как значение. В строке, состоящей только из символов \t, \n, \r, \\, \", \', \ и \uxxxx, они все распознаются и интерпретируются как одиночные символы. Если встретится сочетание \ и символа конца строки, то следующая строка будет считаться продолжением текущей, также будут проигнорированы все пробелы до начала строки-продолжения.

Метод save(OutputStream inStream,String header) сохраняет набор свойств в выходной поток в виде, пригодном для вторичной загрузки с помощью метода load. Символы, считающиеся служебными, кодируются так, чтобы их можно было считать при вторичной загрузке. Символы в национальной кодировке будут приведены к виду \uxxxx. При сохранении используется кодировка ISO 8859-1. Если указан header, то он будет помещен в начало потока в виде комментария (т.е. с символом # в начале), далее будет следовать комментарий, в котором будет указано время и дата сохранения свойств в потоке.

Поделиться:
Популярные книги

Третий Генерал: Тома I-II

Зот Бакалавр
1. Третий Генерал
Фантастика:
городское фэнтези
попаданцы
аниме
сказочная фантастика
5.00
рейтинг книги
Третий Генерал: Тома I-II

Старик

Иванин Александр
Эпоха мертвых
Фантастика:
боевая фантастика
постапокалипсис
7.32
рейтинг книги
Старик

Володарь железного града

Серебров Яр
3. Князь Воротынский
Фантастика:
попаданцы
фантастика: прочее
5.00
рейтинг книги
Володарь железного града

Ворон

LizaMoloko
Фантастика:
попаданцы
фэнтези
гаремник
5.00
рейтинг книги
Ворон

Осажденная крепость. Нерассказанная история первой холодной войны

Млечин Леонид Михайлович
Научно-образовательная:
история
5.00
рейтинг книги
Осажденная крепость. Нерассказанная история первой холодной войны

История катаклизма. Книга вторая. Пятый Аспект. Часть 1

Дженкинс Кассандра
Фантастика:
фэнтези
5.00
рейтинг книги
История катаклизма. Книга вторая. Пятый Аспект. Часть 1

Город посреди леса (рукописи, найденные в развалинах)

Аредова Дарья Владимировна
Фантастика:
ненаучная фантастика
боевая фантастика
попаданцы
мистика
постапокалипсис
7.17
рейтинг книги
Город посреди леса (рукописи, найденные в развалинах)

Перекресток времен. Дилогия

Захаров Андрей Николаевич
Фантастика:
альтернативная история
7.91
рейтинг книги
Перекресток времен. Дилогия

Дитя прибоя

Трофимов Ерофей
Дитя прибоя
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.25
рейтинг книги
Дитя прибоя

Если жизнь бьёт тебя по голове, значит это кому нибудь нужно

Дикий Электрик
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Если жизнь бьёт тебя по голове, значит это кому нибудь нужно

Мрачные сны воров

Инин Дмитрий
5. Негодяй Аллара
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Мрачные сны воров

Апокалипсис

Мартин Джордж Р.Р.
Антология
Фантастика:
социально-философская фантастика
героическая фантастика
боевая фантастика
киберпанк
6.00
рейтинг книги
Апокалипсис

Неучтенный элемент. Том 7

NikL
7. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 7

Князь Медведев. Дилогия

Вяч Павел
Медведев
Фантастика:
аниме
фэнтези
попаданцы
5.67
рейтинг книги
Князь Медведев. Дилогия