Java создать класс коллекции

Работа с коллекциями на Java

Интерфейс Java Collection(java.util.Collection) является одним из корневых интерфейсов API Java Collection. Хотя не создаете экземпляр Collection напрямую, а скорее подтип Collection, вы часто можете рассматривать эти подтипы единообразно, как Collection. В этом тексте вы увидите как.

Создание

Вы не создаете экземпляр Collection напрямую, но экземпляр одного из подтипов Collection. Вот пример создания List, который является подтипом Collection:

Collection collection = new ArrayList();

Приведенный выше пример работает для каждого подтипа коллекции.

Подтипы

Следующие интерфейсы (типы коллекций) расширяют интерфейс Java Collection:

Java не поставляется с удобной реализацией интерфейса Collection, поэтому вам придется использовать один из перечисленных подтипов. Интерфейс просто определяет набор методов (поведения), которые разделяет каждый из этих подтипов. Это позволяет игнорировать конкретный тип коллекции, которую вы используете, и просто рассматривать ее как коллекцию.

Пример стандартного наследования, так что в этом нет ничего волшебного, но время от времени может быть хорошей особенностью.

Вот метод, который работает с коллекцией:

public class MyCollectionUtil < public static void doSomething(Collection collection) < Iterator iterator = collection.iterator(); while(iterator.hasNext())< Object object = iterator.next(); //do something to object here. >> >

И вот несколько способов вызвать этот метод с разными подтипами Collection:

Set set = new HashSet(); List list = new ArrayList(); MyCollectionUtil.doSomething(set); MyCollectionUtil.doSomething(list);

Как добавить элемент

Независимо от того, какой подтип вы используете, существует несколько стандартных методов для добавления элементов в коллекцию. Осуществляется это с помощью метода add():

String anElement = "an element"; Collection collection = new HashSet(); boolean didCollectionChange = collection.add(anElement);

Метод add() добавляет данный элемент в коллекцию и возвращает true, если коллекция изменилась в результате вызова метода. Может и не измениться. Если набор уже содержал этот элемент, он больше не добавляется. С другой стороны, если бы вы вызвали add() для List, и список уже содержал этот элемент, в итоге элемент дважды существовал бы в List.

Читайте также:  Css box shadow with padding

Как удалить элемент

Метод remove() удаляет элемент из коллекции и возвращает значение true, если удаленный элемент присутствовал в коллекции и был удален. Если отсутствует, метод возвращает false. Вот пример удаления:

boolean wasElementRemoved = collection.remove("an element");

Как добавить коллекцию объектов

Для этого используйте addAll():

Set aSet = . // get Set with elements from somewhere Collection collection = new HashSet(); collection.addAll(aSet); //returns boolean too, but ignored here

Java Collection addAll() добавляет все элементы, найденные в Collection, переданные в качестве параметра в метод. Сам объект не добавляется, только его элементы. Если бы вы вызвали add() с Collection в качестве параметра, был бы добавлен сам объект, а не его элементы.

Как именно ведет себя метод addAll(), зависит от подтипа Collection. Некоторые подтипы позволяют добавлять один и тот же элемент более одного раза, а другие – нет.

Как удалить коллекцию элементов

Java Collection removeAll() удаляет все найденные элементы, переданные Collection в качестве параметра методу. Если параметр содержит какие-либо элементы, не найденные в целевой коллекции, они просто игнорируются. Вот пример удаления:

Collection objects = //. get a collection of objects from somewhere. collection.removeAll(objects);

Как сохранить все элементы из коллекции в другой

Коллекция Java retainAll() является противоположностью removeAll(). Вместо удаления всех элементов, найденных в параметре Collection, он сохраняет их и удаляет все остальные.

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

Collection colA = new ArrayList(); Collection colB = new ArrayList(); colA.add("A"); colA.add("B"); colA.add("C"); colB.add("1"); colB.add("2"); colB.add("3"); Collection target = new HashSet(); target.addAll(colA); //target now contains [A,B,C] target.addAll(colB); //target now contains [A,B,C,1,2,3] target.retainAll(colB); //target now contains [1,2,3]

Проверка, содержится ли определенный элемент

Интерфейс Collection имеет два метода, чтобы проверить, содержит ли Collection один или несколько определенных элементов. Это методы contains() и containsAll(). Они проиллюстрированы здесь:

Collection collection = new HashSet(); boolean containsElement = collection.contains("an element"); Collection elements = new HashSet(); boolean containsAll = collection.containsAll(elements);
  • contains() возвращает true, если содержится элемент, и false, если нет;
  • containsAll() возвращает true, если содержатся все элементы в коллекции параметров, и false, если нет.
Читайте также:  Css media type support

Размер

Вы можете проверить размер коллекции, используя метод size(). Под «размером» подразумевается количество элементов. Вот пример:

int numberOfElements = collection.size();

Итерация

Вы можете перебрать все элементы коллекции. Это делается путем получения Java Iterator из коллекции и повторения этого. Вот как это выглядит:

Collection collection = new HashSet(); //. add elements to the collection Iterator iterator = collection.iterator(); while(iterator.hasNext())

Вы также можете выполнить итерацию Java Collection с помощью цикла for-each:

Collection collection = new HashSet(); collection.add(«A»); collection.add(«B»); collection.add(«C»); for(Object object : collection)

Источник

Java создать класс коллекции

Метод Collections.unmodifiableList() возвращает неизменяемую оболочку (wrapper) над исходным списком. Это означает, что любые изменения, попытки добавления, удаления или изменения элементов списка, будут вызывать UnsupportedOperationException. Однако, если изменения происходят в исходном списке, эти изменения будут отражены в неизменяемом списке, поскольку он просто обертывает исходный список. Пример :

 List originalList = new ArrayList<>(); originalList.add("one"); originalList.add("two"); List unmodifiableList = Collections.unmodifiableList(originalList); System.out.println(unmodifiableList); // [one, two] originalList.add("three"); System.out.println(unmodifiableList); // [one, two, three] 

То ли я баран, то ли лыжи не едут. В задачах пробовал Collections.reverse, sort, min, max , но оно все выпадает красным. Будто не верно указыва.. Делал как в задачах

Можно ли вместо такой записи List solarSystem = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(mercury, venus, earth, mars); использовать такую List solarSystem = Arrays.asList(mercury, venus, earth, mars); для того чтобы в неё ничего не добавлять, ведь метод asList возвращает не обычный, а «fixed-size» лист.

ArrayList solarSystem = new ArrayList<>(Arrays.asList(neptune, venus, earth, mars, jupiter, saturn, uranus, mercury)); Про данную конструкцию так и нигде не было упомянуто, что тут происходит в итоге?

Источник

Оцените статью