Ильдар Хабибуллин - Java 7 [Наиболее полное руководство]

Тут можно читать онлайн Ильдар Хабибуллин - Java 7 [Наиболее полное руководство] - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство БХВ-Петербург, год 2012. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Java 7 [Наиболее полное руководство]
  • Автор:
  • Жанр:
  • Издательство:
    БХВ-Петербург
  • Год:
    2012
  • ISBN:
    978-5-9775-0735-6
  • Рейтинг:
    4/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Ильдар Хабибуллин - Java 7 [Наиболее полное руководство] краткое содержание

Java 7 [Наиболее полное руководство] - описание и краткое содержание, автор Ильдар Хабибуллин, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др. Дано подробное изложение последней версии сервлетов, технологии JSP и библиотек тегов JSTL. Около двухсот законченных программ иллюстрируют рассмотренные приемы программирования. Приведена подробная справочная информация о классах и методах Core Java API.

Java 7 [Наиболее полное руководство] - читать онлайн бесплатно ознакомительный отрывок

Java 7 [Наиболее полное руководство] - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Ильдар Хабибуллин
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
Листинг 6.5. Использование итератора вектораj

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.

// Первый способ обхода коллекции типа List // использует индексы ее элементов:

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

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

System.out.println();

// Второй способ обхода коллекции использует итератор:

Iterator it = v.iterator(); // Получаем итератор вектора.

try{

while (it.hasNext()) // Пока в векторе есть элементы,

System.out.println(it.next()); // выводим текущий элемент.

}catch(Exception e){}

// Третий способ обхода коллекции использует оператор for-each: for (String s: v) // Цикл по всем элементам вектора.

System.out.println(s); // Выводим текущий элемент вектора.

Интерфейс ListIterator

Интерфейс Listiterator расширяет интерфейс iterator, обеспечивая перемещение по коллекции как в прямом, так и в обратном направлении. Он может быть реализован только в тех коллекциях, в которых есть понятия следующего и предыдущего элемента и где элементы пронумерованы.

В интерфейс Listiterator добавлены следующие методы:

□ void add (Obj ect element) — добавляет элемент element перед текущим элементом;

□ boolean hasPrevious() — возвращает true, если в коллекции есть элементы, стоящие перед текущим элементом;

□ int nextindex () — возвращает индекс текущего элемента; если текущим является последний элемент коллекции, возвращает размер коллекции;

□ Object previous () — возвращает предыдущий элемент и делает его текущим;

□ int previousindex() — возвращает индекс предыдущего элемента;

□ void set (Obj ect element) заменяет текущий элемент элементом element; выполняется

сразу после next () или previous ( ).

Как видите, итераторы могут изменять коллекцию, в которой они работают, добавляя, удаляя и заменяя элементы. Чтобы это не приводило к конфликтам, предусмотрена исключительная ситуация, возникающая при попытке использования итераторов параллельно "родным" методам коллекции. Именно поэтому в листинге 6.5 действия с итератором заключены в блок try{} catch () {}.

Изменим часть листинга 6.5 с использованием итератора Listiterator.

// Текст листинга 6.1...

// ...

ListIterator lit = v.listIterator(); // Получаем итератор вектора.

// Указатель сейчас находится перед началом вектора.

try{

while(lit.hasNext()) // Пока в векторе есть элементы,

System.out.println(lit.next()); // переходим к следующему

// элементу и выводим его.

// Теперь указатель находится за концом вектора.

// Перейдем к началу вектора. while(lit.hasPrevious())

System.out.println(lit.previous());

}catch(Exception e){}

Интересно, что повторное применение методов next () и previous () друг за другом будет выдавать один и тот же текущий элемент.

Посмотрим теперь, какие возможности предоставляют полностью определенные, готовые к работе классы-коллекции Java.

Классы, создающие списки

Класс ArrayList полностью реализует интерфейс List и итератор типа iterator. Класс ArrayList очень похож на класс Vector, у него тот же набор методов, он может использоваться в тех же ситуациях. Главное отличие класса ArrayList от класса Vector заключается в том, что класс ArrayList не синхронизован. Это означает, что одновременное изменение экземпляра этого класса несколькими подпроцессами приведет к непредсказуемым результатам. Эти вопросы мы рассмотрим в главе 22.

В классе ArrayList три конструктора:

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

□ ArrayList (Collection coll) — формирует объект, содержащий все элементы коллекции coll;

□ ArrayList (int initCapacity) — создает пустой объект емкости initCapacity.

В качестве примера использования класса ArrayList перепишем класс Chorus из листинга 3.3, используя вместо массива коллекцию.

public class Chorus{

public static void main(String[] args){

List singer = new ArrayList<>(); singer.add(new Dog()); singer.add(new Cat()); singer.add(new Cow()); for (Voice v: singer) v.voice();

}

}

Двунаправленный список

Класс LinkedList полностью реализует интерфейсы List, Queue и Deque. Он реализует итераторы типа iterator и Listiterator, что превращает его в двунаправленный список. Он удобен и для организации списков, стеков, очередей и деков. Класс LinkedList не синхронизован. Кроме того, он допускает хранение ссылок null.

В классе LinkedList два конструктора:

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

□ LinkedList (Collection coll) — создает объект, содержащий все элементы коллекции

coll.

В классе LinkedList реализованы только методы интерфейсов. Других методов в нем нет.

Дек

Класс ArrayDeque полностью реализует интерфейсы Queue и Deque. В отличие от класса LinkedList он синхронизован и допускает одновременную работу нескольких подпроцессов с его объектом. Кроме того, он не допускает хранение ссылок null. Он удобен для организации стеков, очередей и деков, тем более что он работает быстрее, чем классы Stack и LinkedList.

В классе ArrayDeque три конструктора:

□ ArrayDeque ( ) -создает пустой объект;

□ ArrayDeque (Collection coll) — создает объект, содержащий все элементы коллекции

coll;

□ ArrayDeque (int numElement) — создает пустой объект емкости numElement.

Упражнение

1. Перепишите листинг 6.1 с использованием классов списков.

Классы, создающие отображения

Класс HashMap полностью реализует интерфейс Map, а также итератор типа iterator. Класс HashMap очень похож на класс Hashtable и может использоваться в тех же ситуациях. Он имеет тот же набор функций и такие же конструкторы:

□ HashMap () — создает пустой объект с показателем загруженности 0,75;

□ HashMap (int capacity) - формирует пустой объект с начальной емкостью capacity и

показателем загруженности 0,75;

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

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

Класс WeakHashMap отличается от класса HashMap только тем, что в его объектах неиспользуемые элементы, на которые никто не ссылается, автоматически исключаются из объекта.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Ильдар Хабибуллин читать все книги автора по порядку

Ильдар Хабибуллин - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Java 7 [Наиболее полное руководство] отзывы


Отзывы читателей о книге Java 7 [Наиболее полное руководство], автор: Ильдар Хабибуллин. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x