Главная » Просмотр файлов » К. Арнольд, Д. Гослинг - Язык программирования Java

К. Арнольд, Д. Гослинг - Язык программирования Java (1160779), страница 49

Файл №1160779 К. Арнольд, Д. Гослинг - Язык программирования Java (К. Арнольд, Д. Гослинг - Язык программирования Java) 49 страницаК. Арнольд, Д. Гослинг - Язык программирования Java (1160779) страница 492019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

RemoveElement(p);}public int numVertices() {return vertices.size();}}// ... другие методы ...Существует ряд методов, предназначенных для просмотра содержимого вектора. При задании недопустимого индекса возбуждается исключениеIndex OutOfBoundsException. Все методы, которые ищут элемент в векторе, используют метод Object.equals для сравнения искомого объекта сэлементами Vector.public final synchronized Object elementAt(int index)Возвращает элемент с индексом index.public final boolean contains(Object obj)Возвращает true, если obj является элементом вектора.public final synchronized int indexOf(Object obj, int index)Ищет первое вхождение заданного объекта obj начиная с позиции index, и возвращает его индекс или –1, если объект не найден.public final int indexOf(Object obj)Эквивалентен indexOf(obj,0).public final synchronized int lastIndexOf(Object obj,int index)Осуществляет поиск obj в обратном направлении от позиции index и возвращает его индекс или –1, если объект не найден.public final int lastIndexOf(Object obj)Эквивалентен lastIndexOf(obj,size()-1).public final synchronized void copyInto(Object[] anArray)Копирует элементы вектора в заданный массив.

Метод может применяться для “фотографирования” содержимого вектора.public final synchronized Enumeration elements()Возвращает Enumeration для текущего состава элементов. Для последовательной выборки элементов возвращаемого объекта применяютсяметоды Enumeration. Исходное состояние при этом не фиксируется, поэтому для получения “фотографии” содержимого вектора пользуйтесьметодом copy Into.public final synchronized Object firstElement()Возвращает первый элемент вектора. Если вектор пуст, возбуждается исключение NoSuchElementException.public final synchronized Object lastElement()Возвращает последний элемент вектора. Если вектор пуст, возбуждается исключение NoSuchElementException.

Пара методов firstElement/lastElement может использоваться для перебора элементов вектора, но существует риск изменения вектора во время выполнения цикла. Дляполучения “фотографии” содержимого вектора пользуйтесь методом copyInto.Размер вектора равен количеству элементов, содержащихся в нем. Чтобы изменить размер вектора, можно добавлять или удалять элементылибо вызвать метод setSize или trimSize:public final int size()Возвращает количество элементов, содержащихся в векторе. Обратите внимание, что эта величина отличается от емкости вектора.public final boolean isEmpty()Возвращает true, если вектор не содержит ни одного элемента.public final synchronized void trimToSize()Сокращает емкость вектора до текущего размера.

Этот метод используется для минимизации объема памяти, когда вектор находится вустойчивом состоянии. Последующие добавления элементов к вектору приведут к его увеличению.public final synchronized void setSize(int newSize)Устанавливает размер вектора равным newSize. Если при этом вектор сокращается, то элементы за его концом теряются; если векторувеличивается, то новые элементы равны null.Правильное управление емкостью вектора существенно влияет на эффективность работы с ним. Если приращение емкости оказываетсянебольшим, а количество добавляемых элементов велико, то слишком много времени будет тратиться на то, чтобы повторно создавать новыйбуфер увеличенного размера и копировать в него содержимое вектора.

Лучше сразу создавать вектор, емкость которого равна максимальномувозможному размеру или близка к нему. Если вы знаете, сколько элементов будет добавлено в вектор, используйте метод ensureCapacity дляоднократного увеличения емкости вектора. Параметры управления емкостью задаются при конструировании вектора. Для создания объектовVector применяются следующие конструкторы:public Vector(int initialCapacity, int capacityIncrement)Создает пустой вектор с заданной исходной емкостью и запоминает ее приращение. Приращение, равное 0, означает удвоение емкости буферапри каждом его увеличении; в противном случае буфер увеличивается на capacityIncrement элементов.public Vector(int initialCapacity)Эквивалентен Vector(initialCapacity, 0).public Vector()Конструирует пустой вектор со значениями исходной емкости и приращения, заданными по умолчанию.public final int capacity()Возвращает текущую емкость вектора — количество элементов, которые могут храниться в векторе без увеличения его размера.public final synchronized void ensureCapacity •• (int minCapacity)Метод гарантирует, что емкость вектора будет не ниже заданной, и при необходимости увеличивает текущую емкость.Приведем метод класса Polygon, который присоединяет к объекту вершины другого многоугольника:public void merge(Polygon other) {int otherSize = other.vertices.size();}vertices.enusreCapacity(vertices.size() + otherSize);for (int i = 0; i << otherSize; i++)vertices.addElement(other.vertices.elementAt(i));В этом примере метод ensureCapacity используется для того, чтобы с добавлением новых вершин емкость вектора увеличивалась не болееодного раза.Реализация vector.toString выдает строку с полным описанием вектора, включающую результат вызова toString для каждого из содержащихся внем элементов.Помимо этих открытых методов, подклассы Vector могут использовать защищенные поля класса.

Соблюдайте осторожность в работе с ними —например, методы Vector предполагают, что размер буфера превышает количество элементов вектора.public Object elementData[]Буфер, в котором хранятся элементы вектора.public int elementCountТекущее количество элементов в буфере.public int capacityIncrementКоличество элементов, которое добавляется к емкости вектора при заполнении буфера elementData. Если значение этого поля равно 0, торазмер буфера удваивается при каждой необходимости его увеличения.Упражнение 12.1Напишите программу, которая открывает файл и читает из него строки (по одной), сохраняя каждую строку в объекте Vector, сортируемомметодом String.compareTo. В этом вам может пригодиться класс для чтения строк из файла, созданный в упражнении 11.2.12.5. Класс StackКласс Stack расширяет Vector, добавляя методы для реализации простейшего стека объектов Object, построенного по принципу LIFO (“последнимпришел, первым вышел”).

Метод push заносит объект в стек, а pop выталкивает верхний элемент стека. Метод peek возвращает значениеверхнего элемента стека, при этом сам элемент остается в стеке. Метод empty возвращает true, если стек пуст. Попытка вызова pop или peek дляпустого объекта-стека приводит к возбуждению исключения EmptyStackException.Чтобы выяснить, насколько далеко расположен тот или иной элемент от вершины стека, применяется метод search; 1 соответствует вершинестека. Если объект не найден, возвращается –1. Для проверки совпадения искомого объекта с объектами в стеке применяется метод Object.equals.В приведенном ниже примере класс Stack используется для слежения за тем, у кого в данный момент находится некоторый предмет — скажем,игрушка.

Имя исходного владельца попадает в стек первым. Когда кто-нибудь одалживает у него игрушку, имя должника также заносится в стек.При возврате игрушки имя должника выталкивается из стека. Последнее имя должно всегда оставаться в стеке, так как в противном случае будетутрачена информация о владельце.import java.util.Stack;public class Borrow {private String itemName;private Stack hasIt = new Stack();public Borrow(String name, String owner) {itemName = name;hasIt.push(owner);// первым следует имя владельца}public void borrow(String borrower) {hasIt.push(borrower);}public String currentHolder() {return (String)hasIt.peek();}}public String returnIt() {String ret = (String)hasIt.pop();if (hasIt.empty())// случайно вытолкнутый владелецhasIt.push(ret);// вернуть его обратноreturn ret;}Упражнение 12.2Добавьте метод, который использует метод search, чтобы определить количество должников.12.6.

Класс DictionaryАбстрактный класс Dictionary фактически представляет собой интерфейс. В нем определен ряд абстрактных методов, предназначенных дляхранения элемента с некоторым ключом и последующей выборки элемента по ключу. Этот интерфейс является базовым для класса Hashtable,однако класс Dictionary определен отдельно, чтобы другие реализации могли использовать разные алгоритмы для сопоставления ключа сэлементом.

Класс Dictionary возвращает null, сигнализируя о таких событиях, как отсутствие элемента с заданным ключом; следовательно, ниключ, ни элемент не могут быть равны null. Если задать значение null для аргумента-ключа или элемента, возбуждается исключениеNullPointerException. В случае, если вам понадобится ввести специальный элемент-маркер, следует использовать для него значение, отличное отnull.Класс Dictionary содержит следующие методы:public abstract Object put(Object key, Object element)Заносит element в словарь с ключом key. Возвращает старый элемент, хранившийся с ключом key, или null, если такого элемента нет.public abstract Object get(Object key)Возвращает объект, занесенный в словарь с ключом key, или null, если ключ не определен.public abstract Object remove(Object key)Удаляет из словаря элемент с ключом key и возвращает значение удаленного элемента или null, если ключ не определен.public abstract int size()Возвращает количество элементов в словаре.public abstract boolean isEmpty()Возвращает true, если словарь не содержит ни одного элемента.public abstract Enumeration keys()Возвращает объект-перечисление для всех ключей, входящих в словарь.public abstract Enumeration elements()Возвращает объект-перечисление для всех элементов, входящих в словарь.Объекты-перечисления, возвращаемые методами keys и elements, не гарантируют фиксации исходного состояния, однако при создании класса, вкотором используется Dictionary, можно осуществить такую гарантию в вашей собственной реализации этих методов.12.7.

Класс HashtableХеш-таблицы представляют собой распространенный механизм для хранения пар ключ/элемент. Они обладают такими достоинствами, какуниверсальность и простота, а также высокая эффективность при хорошо продуманной генерации хеш-кода. Класс Hashtable реализуетинтерфейс Dictionary. Он обладает определенной емкостью и средствами, определяющими момент увеличения таблицы. Расширение хештаблицы требует повторного хеширования всех ее элементов в соответствии с их новым положением в увеличенной таблице, так что важнообеспечить однократное изменение таблицы.Другой фактор, влияющий на эффективность хеш-таблицы, — процесс генерации хеш-кода по ключу.

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

Тип файла
PDF-файл
Размер
1,1 Mb
Тип материала
Высшее учебное заведение

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

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