ArrayList al = new ArrayList(); al.add('First element'); al.add('Second element'); al.add('Third element'); Iterator it = al.iterator(); while(it.hasNext()) { System.out.println((String)it.next()); } System.out.println(' '); al.add(2,'Insertion'); it = al.iterator(); while(it.hasNext()){ System.out.println((String)it.next()); } } } Пример 14.15.
Результатом будет:
First element Second element Third element Firts element Second element Insertion Third element Пример 14.16.
java.util.LinkedList - представляет собой реализацию интерфейса List. Он реализует все методы интерфейса List, помимо этого добавляются еще новые методы, которые позволяют добавлять, удалять и получать элементы в конце и начале списка. LinkedList является двухсвязным списком и позволяет перемещаться как от начала в конец списка, так и наоборот. LinkedList удобно использовать для организации стека.
public class Test { public Test() { } public static void main(String[] args) { Test test = new Test(); LinkedList ll = new LinkedList(); ll.add('Element1'); ll.addFirst('Element2'); ll.addFirst('Element3'); ll.addLast('Element4'); test.dumpList(ll); ll.remove(2); test.dumpList(ll); String element = (String)ll.getLast(); ll.remove(element); test.dumpList(ll); } private void dumpList(List list){ Iterator it = list.iterator(); System.out.println(); while(it.hasNext()){ System.out.println((String)it.next()); } } } Пример 14.17.
Результатом будет:
Element3 Element2 Element1 Element4 Element3 Element2 Element4 Element3 Element2 Пример 14.18.
Классы LinkedList и ArrayList имеют схожую функциональность. Однако с точки зрения производительности они отличаются. Так, в ArrayList заметно быстрей (примерно на порядок) осуществляются операции прохода по всему списку (итерации) и получения данных. LinkedList почти на порядок быстрее выполняет операции удаления и добавления новых элементов.
java.util.Hashtable - расширяет абстрактный класс Dictionary. В JDK 1.2 класс Hashtable также реализует интерфейс Map. Hashtable предназначен для хранения объектов в виде пар ключ/значение. Из самого названия следует, что Hаshtable использует алгоритм хэширования для увеличения скорости доступа к данным. Для того, чтобы выяснить принципы работы данного алгоритма, рассмотрим несколько примеров.
Предположим, имеется массив строк, содержащий названия городов. Для того, чтобы найти элемент массива, содержащий название города, в общем случае требуется просмотреть весь массив, а если необходимо найти все элементы массива, то для поиска каждого, в среднем, потребуется просматривать половину массива. Такой подход может оказаться приемлемым только для небольших массивов.
Как