Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


 оллекции, списки, итераторы




¬ Java получили широкое использование коллекции (Collections) Ц УумныеФ массивы с динамически измен€емой длиной, поддерживающие р€д важных дополнительных операций по сравнению с массивами. Ѕазовым дл€ иерархии коллекций €вл€етс€ класс java.util.AbstractCollection. (¬ общем случае класс коллекции не об€зан быть потомком AbstractCollection Ц он может €вл€етс€ любым классом, реализующим интерфейс Collection).

ќсновные классы коллекций:

  • Set, SortedSet, HashSet,TreeSet Ц множества (наборы неповтор€ющихс€ элементов)
  • List, ArrayList,LinkedList,Vector Ц списки (упор€доченные наборы элементов, которые могут повтор€тьс€ в разных местах списка)
  • Map, Sorted Map Ц таблицы (списки пар Уим€Ф-УзначениеФ)

ƒоступ к элементам коллекции в общем случае не может осуществл€тьс€ по индексу, так как не все коллекции поддерживают индексацию элементов. Ёту функцию осуществл€ют с помощью специального объекта Ц итератора (iterator). ” каждой коллекции collection имеетс€ свой итератор который умеет с ней работать, поэтому итератор ввод€т следующим образом:

Iterator iter = collection.iterator()

” итераторов имеютс€ следующие три метода:

boolean hasNext()- даЄт информацию, имеетс€ ли в коллекции следующий объект.

Object next() Ц возвращает ссылку на следующий объект коллекции.

void remove() Ц удал€ет из коллекции текущий объект, то есть тот, ссылка на который была получена последним вызовом next().

ѕример преобразовани€ массива в коллекцию и цикл с доступом к элементам этой коллекции, осуществл€емый с помощью итератора:

 

java.util.List components= java.util.Arrays.asList(this.getComponents());

 

for (Iterator iter = components.iterator();iter.hasNext();) {

Object elem = (Object) iter.next();

javax.swing.JOptionPane.showMessageDialog(null," омпонент: "+

elem.toString());

}

 

ќсновные методы коллекций:

»м€ метода ƒействие
boolean add(Object obj) ƒобавление объекта в коллекцию (в конец списка). ¬озвращает true в случае успешного добавлени€ - изменени€ коллекции.  оллекци€ может не позволить добавление элементов несовместимого типа или не подход€щих по какому-либо другому признаку.
boolean addAll(Collection c) ƒобавление в коллекцию всех объектов из другой коллекции. ¬озвращает true в случае успешного добавлени€, то есть если добавлен хот€ бы один элемент.
void clear() ќчистка коллекции - удаление из неЄ ссылок на все вход€щие в коллекцию объекты. ѕри этом те объекты, на которые имеютс€ ссылки у других элементов программы, не удал€ютс€ из пам€ти.
boolean contains(Object obj) ¬озвращает true в случае, если коллекци€ содержит объект obj. ѕроверка осуществл€етс€ с помощью поочерЄдного вызова метода obj.equals(e) дл€ элементов e, вход€щих в коллекцию.
boolean containsAll(Collection c) ¬озвращает true в случае, если коллекци€ содержит все элементы коллекции c.
boolean isEmpty() ¬озвращает true в случае, если коллекци€ пуста, то есть не содержит ни одного элемента.
Iterator iterator() ¬озвращает ссылку на итератор Ц объект, позвол€ющий получать поочерЄдный доступ к элементам коллекции. ƒл€ одной коллекции разрешаетс€ иметь произвольное число объектов-итераторов, в том числе Ц разных типов. ¬ процессе работы они могут указывать на разные элементы коллекции. ѕосле создани€ итератор всегда указывает на начало коллекции Ц вызов его метода next() даЄт ссылку на начальный элемент коллекции.
boolean remove(Object obj) ”дал€ет из коллекции первое встретившеес€ вхождение объекта obj. ѕоиск и удаление осуществл€етс€ с помощью итератора. ¬озвращает true в случае, если удаление удалось, то есть если коллекци€ изменилась.
boolean remove All(Collection c) ”дал€ет из коллекции все элементы коллекции c. ¬озвращает true в случае, если удаление удалось, то есть если коллекци€ изменилась.
boolean retainAll(Collection c) ќставл€ет в коллекции только те из вход€щих в неЄ элементов, которые вход€т в коллекцию c.
int size() ¬озвращает число элементов в коллекции.
Object[] toArray() ¬озвращает массив ссылок на объекты, содержащиес€ в коллекции. “о есть преобразует коллекцию в массив.
T[] toArray(T[n] a) ¬озвращает массив элементов типа T, полученных в результате преобразовани€ элементов, содержащихс€ в коллекции. “о есть преобразует коллекцию в массив. ≈сли число элементов коллекции не превышает размер n массива a, размещение данных производитс€ в существующих €чейках пам€ти, отведЄнных под массив. ≈сли превышает n Ц в пам€ти динамически создаЄтс€ и заполн€етс€ новый набор €чеек, и их число делаетс€ равным числу элементов коллекции. ѕосле чего переменна€ a начинает ссылатьс€ на новый набор €чеек.
String toString() ћетод переопределЄн Ц он возвращает строку со списком элементов коллекции. ¬ списке вывод€тс€ заключЄнные в квадратные скобки строковые представлени€ элементов, раздел€емые комбинацией У, Ф Ц зап€та€ с пробелом после неЄ.

 

—амыми распространЄнными вариантами коллекций €вл€ютс€ списки (Lists). ќни во многом похожи на массивы, но отличаютс€ от массивов тем, что в списках основными операци€ми €вл€ютс€ добавление и удаление элементов. ј не доступ к элементам по индексу, как в массивах.

¬ классе List имеютс€ методы коллекции, а также р€д дополнительных методов:

list.get(i) Ц получение ссылки на элемент списка list по индексу i.

list.indexOf(obj) - получение индекса элемента obj в списке list. ¬озвращает -1 если объект не найден.

list.listIterator(i) Ц получение ссылки на итератор типа ListIterator, обладающего дополнительными методами по сравнению с итераторами типа Iterator.

list.listIterator(i) Ц то же с позиционированием итератора на элемент с индексом i.

list.remove(i) Ц удаление из списка элемента с индексом i.

list.set(i,obj) Ц замена в списке элемента с индексом i на объект obj.

list.subList(i1,i2) Ц возвращает ссылку на подсписок, состо€щий из элементов списка с индексами от i1 до i2.

 роме них в классе List имеютс€ и многие другие полезные методы.

 

–€д полезных методов дл€ работы с коллекци€ми содержитс€ в классе Collections:

Collections.addAll(c,e1,e2,Е,eN) - добавление в коллекцию c произвольного числа элементов e1,e2,Е,eN.

Collections.frequency(c,obj) Ц возвращает число вхождений элемента obj в коллекцию c.

Collections.reverse(list) Ц обращает пор€док следовани€ элементов в списке list (первые станов€тс€ последними и наоборот).

Collections.sort(list) Ц сортирует список в пор€дке возрастани€ элементов. —равнение идЄт вызовом метода e1.compareTo(e2) дл€ очередных элементов списка e1 и e2.

 роме них в классе Collections имеютс€ и многие другие полезные методы.

 

¬ классе Arrays имеетс€ метод

Arrays.asList(a) Ц возвращает ссылку на список элементов типа T, €вл€ющийс€ оболочкой над массивом T[] a. ѕри этом и массив, и список содержат одни и те же элементы, и изменение элемента списка приводит к изменению элемента массива, и наоборот.

 





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2017-02-28; ћы поможем в написании ваших работ!; просмотров: 682 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

Ќадо любить жизнь больше, чем смысл жизни. © ‘едор ƒостоевский
==> читать все изречени€...

2053 - | 1772 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.01 с.