47707 (597353), страница 3

Файл №597353 47707 (Наследование и классы-коллекции) 3 страница47707 (597353) страница 32016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Четыре метода позволяют отыскать позицию указанного элемента element:

indexOf (Object element) — возвращает индекс первого появления элемента в векторе;

indexOf (Object element, int begin) — ведет поиск, начиная с индекса begin включительно;

lastindexOf (Object element) — возвращает индекс последнего появления элемента в векторе;

lastindexOf (Object element, int start) — ведет поиск от индекса start включительно к началу вектора.

Если элемент не найден, возвращается —1.

Как удалить элементы

Логический метод remove (Object element) удаляет из вектора первое вхождение указанного элемента element. Метод возвращает true, если элемент найден и удаление произведено.

Метод remove (int index) удаляет элемент из позиции index и возвращает его в качестве своего результата типа Object.

Удалить диапазон элементов можно методом removeRange(int begin, int end), не возвращающим результата. Удаляются элементы от позиции begin включительно до позиции end исключительно.

Удалить из данного вектора все элементы коллекции coll возможно логическим Методом removeAll(Collection coll).

Удалить последние элементы можно, просто урезав вектор методом

setSizefint newSize).

Удалить все элементы, кроме входящих в указанную коллекцию coll, разрешает логический метод retainAll(Collection coll).

Удалить все элементы вектора можно методом clear()или обнулив размер вектора методом setSize(O).

Данный листинг дополняет пример, записанный в приложении 2, обрабатывая выделенные из строки слова с помощью вектора.

Работа с вектором

Vector v = new Vector();

String s = "Строка, которую мы хотим разобрать на слова.";

StringTokenizer st = new StringTokenizer(s, " \t\n\r,.");

while (st.hasMoreTokens()){

// Получаем слово и заносим в вектор

v.add(st.nextToken()); // Добавляем в конец вектора

}

System.out.println(v.firstElement()); // Первый элемент

System.out.println(v.lastElement()); // Последний элемент

v.setSize(4); // Уменьшаем число элементов

v.add("собрать."); // Добавляем в конец

// укороченного вектора

v.set(3, "опять"); // Ставим в позицию 3

for (int i = 0; i < v.sizeO; i++) // Перебираем весь вектор

System.out.print(v.get(i) + " ");

System.out.println();

Класс Vector является примером того, как можно объекты класса Object, a значит, любые объекты, объединить в коллекцию. Этот тип коллекции упорядочивает и даже нумерует элементы. В векторе есть первый элемент, есть последний элемент. К каждому элементу обращаются непосредственно по индексу. При добавлении и удалении элементов оставшиеся элементы автоматически перенумеровываются.

Второй пример коллекции — класс Stack — расширяет кладе Vector.

Класс Stack

Класс Stack из пакета java.util. объединяет элементы в стек.

Стек (Stack) реализует порядок работы с элементами подобно магазину винтовки— первым выстрелит патрон, положенный в магазин последним,— или подобно железнодорожному тупику — первым из тупика выйдет вагон, загнанный туда последним. Такой порядок обработки называется LIFO (Last In — First Out).

Перед работой создается пустой стек конструктором Stack ().

Затем на стек кладутся и снимаются элементы, причем доступен только "верхний" элемент, тот, что положен на стек последним.

Дополнительно к методам класса vector класс Stack содержит пять методов, позволяющих работать с коллекцией как со стеком:

push (Object item) —помещает элемент item в стек;

pop () — извлекает верхний элемент из стека;

peek () — читает верхний элемент, не извлекая его из стека;

empty () — проверяет, не пуст ли стек;

search (Object item) — находит позицию элемента item в стеке. Верхний элемент имеет позицию 1, под ним элемент 2 и т. д. Если элемент не найден, возвращается — 1.

Еще один пример коллекции совсем другого рода — таблицы — предоставляет класс Hashtable.

Класс Hashtable

Класс Hashtable расширяет абстрактный класс Dictionary. В объектах этого класса хранятся пары "ключ — значение".

Из таких пар "Фамилия И. О. — номер" состоит, например, телефонный справочник.

Каждый объект класса Hashtable кроме размера (size) — количества пар, имеет еще две характеристики: емкость (capacity) — размер буфера, и показатель загруженности (load factor) — процент заполненности буфера, по достижении которого увеличивается его размер.

Как создать таблицу

Для создания объектов класс Hashtable предоставляет четыре конструктора:

Hashtable() — создает пустой объект с начальной емкостью в 101 элемент и показателем загруженности 0,75;

Hashtable (int capacity) — создает пустой объект с начальной емкостью capacity и показателем загруженности 0,75;

Hashtable(int capacity, float loadFactor) — создает пустой Объект с начальной емкостью capacity и показателем загруженности loadFactor;

Hashtable (Map f) — создает объект класса Hashtable, содержащий все элементы отображения f, с емкостью, равной удвоенному числу элементов отображения f, но не менее 11, и показателем загруженности 0,75.

Как заполнить таблицу

Для заполнения объекта класса Hashtable используются два метода:

Object put(Object key, Object value) — добавляет пару "key — value", если ключа key не было в таблице, и меняет значение value ключа key, если он уже есть в таблице. Возвращает старое значение ключа или null, если его не было. Если хотя бы один параметр равен null, возникает исключительная ситуация;

void putAll(Map f) — добавляет все элементы отображения f. В объектах-ключах key должны быть реализованы методы hashCode() и equals ().

Как получить значение по ключу

Метод get (Object key) возвращает значение элемента с ключом key в виде объекта класса Object. Для дальнейшей работы его следует преобразовать к конкретному типу.

Как узнать наличие ключа или значения

Логический метод containsKey(Object key) возвращает true, если в таблице есть ключ key.

Логический метод containsvalue (Object value) или старый метод contains (Object value) возвращают true, если в таблице есть ключи со значением value.

Логический метод isEmpty() возвращает true, если в таблице нет элементов.

Как получить все элементы таблицы

Метод values()представляет все значения value таблицы в виде интерфейса Collection. Все модификации в объекте collection изменяют таблицу, и наоборот.

Метод keyset() предоставляет все ключи key таблицы в виде интерфейса set. Все изменения в объекте set корректируют таблицу, и наоборот.

Метод entrySet() представляет все пары "key — value" таблицы в виде интерфейса Set. Все модификации в объекте Set изменяют таблицу, и наоборот.

Метод toString() возвращает строку, содержащую все пары.

Как удалить элементы

Метод remove (Object key) удаляет пару с ключом key, возвращая значение этого ключа, если оно есть, и null, если пара с ключом key не найдена.

Метод clear() удаляет все элементы, очищая таблицу.

Пример программы «Телефонный справочник».

import java.util.*;

class PhoneBook{

public static void main(String[] args){

Hashtable yp = new Hashtable();

String name = null;

yp.put("John", "123-45-67");

yp.put ("Lemon", "567-34-12");

yp.put("Bill", "342-65-87");

yp.put("Gates", "423-83-49");

yp.put("Batman", "532-25-08");

try{

name = args[0];

}

catch(Exception e){

System.out.println("Usage: Java PhoneBook Name");

}

return;

}

if (yp.containsKey(name))

System.out.println(name + "'s phone = " + yp.get(name));

else

System.out.println("Sorry, no such name");

)

}

Класс Properties

Класс Properties расширяет класс Hashtable. Он предназначен в основном для ввода и вывода пар свойств системы и их значений. Пары хранятся в виде строк типа String. В классе Properties два конструктора:

Properties() — создает пустой объект;

Properties (Properties default) — создает объект с заданными парами свойств default.

Кроме унаследованных от класса Hashtable методов в классе Properties есть еще следующие методы.

Два метода, возвращающих значение ключа-строки в виде строки:

• String getProperty (String key) — возвращает значение по ключу key;

• String getProperty(String.key, String defaultValue) — возвращает значение по ключу key; если такого ключа нет, возвращается defaultValue.

Метод setProperty(String key, String value) добавляет новую пару, если ключа key нет, и меняет значение, если ключ key есть.

Метод load(Inputstream in) загружает свойства из входного потока in.

Методы list(PrintStream out) И list (PrintWriter out) выводят свойства в выходной поток out.

Метод store (OutputStream out, String header) выводит свойства в выходной поток out с заголовком header.


Рисунок. Иерархия классов и интерфейсов-коллекций.

Примеры классов Vector, Stack, Hashtable, Properties показывают удобство классов-коллекций. Поэтому в Java 2 разработана целая иерархия коллекций. Она показана на рисунке. Справа записаны имена интерфейсов. Стрелки указывают классы, реализующие эти интерфейсы. Все коллекции разбиты на три группы, описанные в интерфейсах List, Set и Map.

Примером реализации интерфейса List может служить класс Vector, примером реализации интерфейса мар — класс Hashtable.

Коллекции List и Set имеют много общего, поэтому их общие методы объединены и вынесены в суперинтерфейс Collection.

Интерфейс Collection

Интерфейс collection из пакета java.util описывает общие свойства коллекций List и Set. Он содержит методы добавления и удаления элементов, проверки и преобразования элементов:

boolean add (Object obj) — добавляет элемент obj в конец коллекции; возвращает false, если такой элемент в коллекции уже есть, а коллекция не допускает повторяющиеся элементы; возвращает true, если добавление прошло удачно;

boolean addAll (Collection coll) — добавляет все элементы коллекции coll в конец данной коллекции;

void clear() — удаляет все элементы коллекции;

boolean contains (Object obj) — проверяет наличие элемента obj в коллекции;

boolean containsAll (Collection coll) — проверяет наличие всех элементов коллекции coll в данной коллекции;

boolean isEmpty() — проверяет, пуста ли коллекция;

iterator iterator () — возвращает итератор данной коллекции;

boolean remove (Object obj) — удаляет указанный элемент из коллекции; возвращает false, если элемент не найден, true, если удаление прошло успешно;

boolean removeAll (Collection coll) — удаляет элементы указанной коллекции, лежащие в данной коллекции;

boolean retainAll (Collection coll) — удаляет все элементы данной коллекции, кроме элементов коллекции coll;

int size () — возвращает количество элементов в коллекции;

Object [] toArray() — возвращает все элементы коллекции в виде массива;

Objectn toArray(Object[] a) — записывает все элементы коллекции в массив а, если в нем достаточно места.

Интерфейс List

Интерфейс List из пакета java.util, расширяющий интерфейс Collection, описывает методы работы с упорядоченными коллекциями. Иногда их называют последовательностями (sequence). Элементы такой коллекции пронумерованы, начиная от нуля, к ним можно обратиться по индексу. В отличие от коллекции Set элементы коллекции List могут повторяться.

Класс Vector — одна из реализаций интерфейса List.

Интерфейс List добавляет к методам интерфейса Collection методы, использующие индекс index элемента:

void add(int index, Object obj) — вставляет элемент obj в позицию index; старые элементы, начиная с позиции index, сдвигаются, их индексы увеличиваются на единицу;

boolean addAll(int index, Collection coll) — вставляет все элементы коллекции coll;

Object get(int index) — возвращает элемент, находящийся в позиции index;

int indexOf(Object obj) — возвращает индекс первого появления элемента obj в коллекции;

int lastindexOf (Object obj) — возвращает индекс последнего появления элемента obj в коллекции;

Listiterator listiterator () — возвращает итератор коллекции;

Listiterator listiterator (int index) — возвращает итератор конца коллекции от позиции index;

Object Set (int index, Object obj) — заменяет элемент, находящийся в позиции index, элементом obj;

List subListUnt from, int to) — возвращает часть коллекции от позиции from включительно до позиции to исключительно.

Интерфейс Set

Интерфейс Set из пакета java.util, расширяющий интерфейс Collection, описывает неупорядоченную коллекцию, не содержащую повторяющихся элементов. Это соответствует математическому понятию множества (Set). Такие коллекции удобны для проверки наличия или отсутствия у элемента свойства, определяющего множество. Новые методы в интерфейс Set не добавлены, просто метод add () не станет добавлять еще одну копию элемента, если такой элемент уже есть в множестве.

Характеристики

Тип файла
Документ
Размер
1,1 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6384
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее