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.
Строки из файла будут считываться до тех пор, пока не будет достигнут
его конец. Строки, состоящие из одних пробелов, или начинающиеся со
знаков ! или #, игнорируются, т.е. их можно трактовать как комментарии. Если строка оканчивается символом
Метод save(OutputStream inStream,String header) сохраняет набор свойств в выходной поток в виде, пригодном для вторичной загрузки с помощью метода load. Символы, считающиеся служебными, кодируются так, чтобы их можно было считать при вторичной загрузке. Символы в национальной кодировке будут приведены к виду \uxxxx. При сохранении используется кодировка ISO 8859-1. Если указан header, то он будет помещен в начало потока в виде комментария (т.е. с символом # в начале), далее будет следовать комментарий, в котором будет указано время и дата сохранения свойств в потоке.
В классе Properties определен еще метод list(PrintWriter out), который практически идентичен save. Отличается лишь заголовок, который изменить нельзя. Кроме того, строки усекаются по ширине. Поэтому данный метод для сохранения Properties не годится.