
- •30.Общее представление о потоках ввода/вывода
- •31.Байтовые и символьные потоки
- •32. Определение файла. Тестирование проверка объектов File
- •34. Сериализация
- •35. Обработка исключений в Java
- •36. Многопоточное программирование
- •37. Создание потока и его жизненный цикл
- •38. Управление приоритетами и ThreadGroup
- •39. Потоки-демоны
- •40. Методы synchronized
- •41. Коллекции
- •42. Списки
- •43. 43. Множества
- •44. Карты отображений
- •45. Обзор сокетов
- •49. Дейтаграммы
- •46. Сетевые классы и интерфейсы 47. Производственные методы 48. Сокеты tcp/ip клиентов и серверов
- •50. Основы оконной графики 51. Иерархия классов awt
- •Класс Applet
- •52. Свойства класса Component
- •53. Класс Container
- •54. Наследники класса Component
- •55. Классы Choice и List
- •56. Классы TextComponent, TextField, TextArea
- •57. Наследники Container
- •58. Swing-технология
- •59. Обработка событий в Java
- •60. Классы-адаптеры
- •61. Понятие и терминология jdbc 62. Связь и различия jdbc и odbc
- •63. Драйвера, соединения и запросы
- •64. DriverManager
- •65. Создание соединения с источником данных
- •66. Интерфейсы Statement, PreparedStatement и CallableStatement
- •69. Использование потоков в апплетах
- •70. Основы xml
- •71. Xml. Схема dtd. Элемент Schema схемы xml
- •72. Ссылки xml
- •74. Язык xLink (Атрибуты связующих элементов xLink, возможные значения атрибута xlink:show, возможные значения атрибута xlink:actuate)
- •75. Язык xPointer (Синтаксис xPointer, элементы абсолютного обнаружения xPointer, выражения отношений, фильтры атрибутов и их значений)
- •76. Объектная модель документа xml – dom
- •77. Simple api для xml (sax)
- •78. Язык преобразований xslt (Операционный xslt, процесс преобразования xsl, использование xslt, преобразования xml в html)
- •80. Сервлеты: структура, назначение и преимущества
- •81. Жизненный цикл сервлета
- •83. Пакеты javax.Servlet и javax.Servlet.Http
- •84. Технология rmi. Сравнение распределенных и нераспределенных приложений
- •85. Архитектура rmi
41. Коллекции
Коллекции представляют собой реализацию абстрактных типов (структур) данных, поддерживающих две основные операции:
· вставка нового элемента в коллекцию;
· удаление элемента из коллекции.
В качестве дополнительных операций могут быть реализованы следующие: создать структуру данных, просмотреть элементы, подсчитать их количество и др.
Примером коллекции является стек (структура LIFO – Last In First Out), в котором всегда удаляется объект, вставленный последним. Для очереди (структура FIFO – First In First Out) используется другое правило удаления: всегда удаляется элемент, вставляемый первым. В абстрактных типах данных существует несколько видов очередей: двусторонние очереди, кольцевые очереди, обобщенные очереди, в которых запрещены повторяющиеся элементы. Стеки и очереди могут быть реализованы как на базе массива, так и на базе связного списка.
Коллекции объединены в библиотеку классов java.util и представляют собой контейнеры для хранения и манипулирования объектами. До появления Java 2 эта библиотека содержала классы только для работы с наиболее необходимыми структурами данных: Vector, Stack, Hashtable, BitSet, а также интерфейс Enumeration для работы с элементами этих классов. Коллекции, появившиеся в Java 2, представляют общую технологию хранения и доступа к объектам. Структура коллекций характеризует способ, с помощью которого программы Java обрабатывают группы объектов. Коллекции – это динамические массивы, связные списки, деревья, множества, хэш-таблицы, стеки, очереди. В интерфейсе Collection определены статические методы, которые работают на всех коллекциях. Другой способ работы с элементами коллекций – использование методов интерфейса Iterator, который обеспечивает средства перечисления содержимого коллекции.
Интерфейсы коллекции:
Collection – вершина иерархии коллекций;
List – расширяет коллекции для обработки списков;
Set – расширяет коллекции для обработки наборов (множеств), содержащих уникальные элементы;
Map – карта отображения вида “ключ-значение”. Интерфейс Map будет рассмотрен ниже.
Все классы коллекций реализуют также интерфейс Serializable.
42. Списки
Класс ArrayList – динамический массив объектных ссылок. Расширяет класс AbstractList и реализует интерфейс List. Класс имеет конструкторы:
ArrayList()
ArrayList(Collection c)
ArrayList(int capacity)
Практически все методы класса являются реализацией абстрактных методов из суперклассов и интерфейсов. Методы интерфейса List позволяют вставлять и удалять элементы из позиций, указываемых через отсчитываемый от нуля индекс:
void add(int index, Object obj) – вставляет obj в позицию, указанную в index;
void addAll(int index, Collection c) – вставляет в вызывающий список все элементы коллекции с, начиная с позиции index;
Object get(int index) – возвращает элемент в виде объекта из позиции index;
int indexOf(Object ob) – возвращает индекс указанного объекта;
Object remove(int index) – удаляет объект из позиции index.
Удаление элементов такой коллекции представляет собой ресурсоемкую задачу, поэтому объект ArrayList лучше всего подходит для хранения неизменяемых списков.
/* пример # 1 : работа со списком : DemoList1.java */
import java.util.*;
public class DemoList1 {
public static void main(String[] args) {
List c = new ArrayList();
//Collection c = new ArrayList();//попробуйте так!
int i = 2, j = 5;
c.add(new Integer(i));
c.add(new Boolean("True"));
c.add("<STRING>");
c.add(2, Integer.toString(j) + "X");
//заменить 2 на 5 !
System.out.println(c);
if (c.contains("5X"))
c.remove(c.indexOf("5X"));
System.out.println(c);
}
}
В результате на консоль будет выведено:
[2, true, 5X, <STRING>]
[2, true, <STRING>]
Для доступа к элементам списка может использоваться интерфейс ListIterator, в то же время класс ArrayList обладает аналогичными методами, в частности Object set(int index, Object ob), который позволяет заменить элемент списка без итератора, возвращая при этом удаляемый элемент.