Класс Collections в Java

Класс Collections содержит большое количество статических методов, предназначенных для манипулирования коллекциями.

С применением предыдущих версий языка было разработано множество коллекций, в которых никаких проверок нет, следовательно, при их использовании нельзя гарантировать, что в коллекцию не будет помещен “посторонний” объект. Для этого в класс Collections был добавлен новый метод – checkedCollection(): 
public static <E> Collection <E> 
checkedCollection(Collection<E> c, Class<E> type)

Этот метод создает коллекцию, проверяемую на этапе выполнения, то есть

в случае добавления “постороннего” объекта генерируется исключение ClassCastException:

/* пример # 19 : проверяемая коллекция: SafeCollection.java */

package chapt10;

import java.util.*;

public class SafeCollection {

public static void main(String args[]) {

Collection c = Collections.checkedCollection(

new HashSet<String>(), String.class);

c.add("Java");

c.add(7.0); // ошибка времени выполнения

}

}

В этот же класс добавлен целый ряд методов, специализированных для проверки конкретных типов коллекций, а именно: checkedList(),

checkedSortedMap(), checkedMap(), checkedSortedSet(),

checkedSet(), а также:

<T> boolean addAll(Collection<? super T> c, T… a) – добавляет в параметризованную коллекцию соответствующие параметризации элементы;

<T> void copy(List<? super T> dest, List<? extends T> src) – копирует все элементы из одного списка в другой;

boolean disjoint(Collection<?> c1, Collection<?> c2) – возвращает true, если коллекции не содержат одинаковых элементов;

<T> List <T> emptyList(), <K,V> Map <K,V> emptyMap(),

<T>
Set <T> emptySet() – возвращают пустой список, карту отображения

и множество соответственно;

<T> void fill(List<? super T> list, T obj) – заполняет список заданным элементом ;

int frequency(Collection<?> c, Object o) – возвращает количество вхождений в коллекцию заданного элемента;

<T extends Object & Comparable <? super T>> T max(Collection<? extends T> coll),

<T extends Object & Comparable <? super T>> T min(Collection<? extends T> coll) – возвращают минимальный

и максимальный элемент соответственно;

<T> T max(Collection <? extends T> coll,

Comparator<? super T> comp),

<T> T min(Collection<? extends T> coll,

Comparator<? super T> comp) – возвращают минимальный и максимальный элемент соответственно, используя Comparator для сравнения;

<T> List <T> nCopies(int n, T o) – возвращает список из n заданных элементов;

<T> boolean replaceAll(List<T> list, T oldVal, T newVal) – заменяет все заданные элементы новыми;

void reverse(List<?> list) – “переворачивает” список;

void rotate(List<?> list, int distance) – сдвигает список циклически на заданное число элементов;

void shuffle(List<?> list) – перетасовывает элементы списка;

<T> Set <T> singleton(T o), singletonList(T o), singletonMap(K key, V value) – создают множество, список и карту отображения, состоящие из одного элемента;

<T extends Comparable<? super T>> void sort(List<T> list),

<T> void sort(List<T> list, Comparator<? super T> c) – сортировка списка, естественным порядком и используя Comparator соответственно;

void swap(List<?> list, int i, int j) – меняет местами элементы списка стоящие на заданных позициях.

/* пример # 20 : методы класса Collections: CollectionsDemo.java:

MyComparator.java */

package chapt10;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class CollectionsDemo {

public static void main(String[] args) {

MyComparator<Integer> comp =

new MyComparator<Integer>();

ArrayList<Integer> list =

new ArrayList<Integer>();

Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.shuffle(list);

print(list);

Collections.sort(list, comp);

print(list);

Collections.reverse(list);

print(list);

Collections.rotate(list, 3);

print(list);

System.out.println("min: "

+ Collections.min(list, comp));

System.out.println("max: "

+ Collections.max(list, comp));

List<Integer> singl =

Collections.singletonList(71);

print(singl);

//singl.add(21);//ошибка времени выполнения

}

static void print(List<Integer> c) {

for (int i : c)

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

System.out.println();

}

}

package chapt10;

import java.util.Comparator;

public class MyComparator<T> implements Comparator<Integer> {

public int compare(Integer n, Integer m) {

return m.intValue() – n.intValue();

}

}

В результате будет выведено:

4 3 5 1 2

5 4 3 2 1

1 2 3 4 5

3 4 5 1 2

min: 5

max: 1

71

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100