|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
TreeSet()
TreeSet(Collection <? extends E> c) TreeSet(Comparator <? super E> c) TreeSet(SortedSet <E> s) Класс TreeSet<E> содержит методы по извлечению первого и последнего (наименьшего и наибольшего) элементов E first() и E last(). Методы SortedSet<E> subSet(E from, E to), SortedSet<E> tailSet(E from) и SortedSet<E> headSet(E to) предназначены для извлечения определенной части множества. Метод /* пример # 10: создание множества из списка и его методы: DemoTreeSet.java */ package chapt10; import java.util.*;
public class DemoTreeSet { public static void main(String[] args) { ArrayList<String> c = new ArrayList<String>(); boolean b; for (int i = 0; i < 6; i++) c.add((int) (Math. random () * 71) + "Y "); System. out. println(c + "список"); TreeSet<String> set = new TreeSet<String>(c); System. out. println(set + "множество"); b = set.add("5 Element"); // добавление(b=true) b = set.add("5 Element"); // добавление(b=false) // после добавления System. out. println(set + "add"); System. out. println(set.comparator()); //null!!! // извлечение наибольшего и наименьшего элементов System. out. println(set.last() + " " + set.first()); } } В результате может быть выведено: [44Y, 56Y, 49Y, 26Y, 49Y, 2Y ]список [2Y, 26Y, 44Y, 49Y, 56Y ]множество [2Y, 26Y, 44Y, 49Y, 5 Element, 56Y ]add Null Y 2Y Множество инициализируется списком и сортируется сразу же в процессе создания. После добавления нового элемента производится неудачная попытка добавить его повторно. С помощью итератора элемент может быть найден и удален из множества. Для множества, состоящего из обычных строк, используется по умолчанию правило обычной лексикографической сортировки, поэтому метод comparator() возвращает null. Если попытаться заменить тип String на StringBuilder или /* пример # 11:пользовательский класс, объект которого может быть добавлен в множество TreeSet: Message.java */ package chapt10; import java.util.*; public class Message implements Comparable<Message> { private StringBuilder str; private int idSender;
public Message(StringBuilder s, int id) { super (); this. str = s; idSender = id; } public String getStr() { return str.toString(); } public int getId() { return idSender; } public int compareTo(Message a0) { return (idSender - a0.getId()); } } Предлагаемое решение универсально для любых пользовательских типов. Абстрактный класс EnumSet<E extends Enum<E>> наследуется от абстрактного класса AbstractSet. Специально реализован для работы с типами enum. Все элементы такой коллекции должны принадлежать единственному типу enum, определенному явно или неявно. Внутренне множество представимо в виде вектора битов, обычно единственного long. Множества нумераторов поддерживают перебор по диапазону из нумераторов. Скорость выполнения операций над таким множеством очень высока, даже если в ней участвует большое количество элементов. Создать объект этого класса можно только с помощью статических методов. Метод EnumSet<E> noneOf(Class<E> elemType) cоздает пустое множество нумерованных констант с указанным типом элемента, метод /* пример # 12: иcпользование множества enum-типов: UseEnumSet.java */ package chapt10; import java.util.EnumSet;
enum Faculty{ FFSM, MMF, FPMI, FMO, GEO }
public class UseEnumSet { public static void main(String[] args) { /*множество set1 содержит элементы типа enum из интервала, определенного двумя элементами*/ EnumSet <Faculty> set1 = EnumSet. range (Faculty. MMF, Faculty. FMO); /*множество set2 будет содержать все элементы, не содержащиеся EnumSet <Faculty> set2 = EnumSet. complementOf (set1); System. out. println(set1); System. out. println(set2); } } В результате будет выведено: [MMF, FPMI, FMO] [FFSM, GEO] В следующем примере показано использование интерфейса NavigableSet. Метод first() возвращает первый элемент из множества. Метод subSet(E fromElement, E toElement) возвращает список элементов, находящихся между fromElement и toElement, причем последний не включается. Методы headSet(E element) и tailSet(E element, boolean inclusive) возвращают то множество элементов, которое меньше либо больше element соответственно. Если inclusive равно true, то элемент включается в найденное множество и не включается в противном случае. /* пример # 13: иcпользование множества NavigableSet: NavigableSetTest.java */ package chapt10; import java.util.*;
public class NavigableSetTest { public static void main(String[] args) { HashSet<String> city = new HashSet<String>(); city.add("Minsk"); city.add("Mosсow"); city.add("Polotsk"); city.add("Brest"); NavigableSet<String> ns = new TreeSet<String>(city); System. out. println("All: " + ns); System. out. println("First: " + ns.first()); System. out. println("Between Minsk and Polotsk: " + ns.subSet("Minsk","Polotsk")); System. out. println("Before Minsk: " + ns.headSet("Minsk")); System. out. println("After Minsk: " + ns.tailSet("Minsk", false)); } } В результате на консоль будет выведено: All: [Brest, Minsk, Mosсow, Polotsk] Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.008 сек.) |