Отличие collection от collections java

В чем разница между классами java.Util.Collection и java.Util.Collections?

java.util.Collections — набор статических методов для работы с коллекциями.

java.util.Collection — один из основных интерфейсов Java Collections Framework.

Как поведёт себя коллекция, если вызвать iterator.Remove()?

Если вызову iterator.remove() предшествовал вызов iterator.next(), то iterator.remove() удалит элемент коллекции, на который указывает итератор, в противном случае будет выброшено IllegalStateException().

Чем отличается ArrayList от LinkedList? в каких случаях лучше использовать первый, а в каких второй?

ArrayList это список, реализованный на основе массива, а LinkedList — это классический двусвязный список, основанный на объектах с ссылками между ними.

  • доступ к произвольному элементу по индексу за константное время O(1);
  • доступ к элементам по значению за линейное время O(N);
  • вставка в конец в среднем производится за константное время O(1);
  • удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (capacity) не изменяется);
  • вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку вправо;
  • минимум накладных расходов при хранении.
  • на получение элемента по индексу или значению потребуется линейное время O(N);
  • на добавление и удаление в начало или конец списка потребуется константноеO(1);
  • вставка или удаление в/из произвольного место константноеO(1);
  • требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка.
Читайте также:  Цикл for диапазон python

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

Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?

При удалении произвольного элемента из списка, все элементы, находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость, capacity) не изменяется никак. Механизм автоматического «расширения» массива существует, а вот автоматического «сжатия» нет, можно только явно выполнить «сжатие» командой trimToSize().

LinkedList — это односвязный, двусвязный или четырехсвязный список?

Двусвязный: каждый элемент LinkedList хранит ссылку на предыдущий и следующий элементы.

Как устроен HashMap?

HashMap состоит из «корзин» (bucket). С технической точки зрения «корзины» — это элементы массива, которые хранят ссылки на списки элементов. При добавлении новой пары «ключ-значение», вычисляет хэш-код ключа, на основании которого вычисляется номер корзины (номер ячейки массива), в которую попадет новый элемент. Если корзина пустая, то в нее сохраняется ссылка на вновь добавляемый элемент, если же там уже есть элемент, то происходит последовательный переход по ссылкам между элементами в цепочке, в поисках последнего элемента, от которого и ставится ссылка на вновь добавленный элемент. Если в списке был найден элемент с таким же ключом, то он заменяется.

Как работает HashMap при попытке сохранить в него два элемента по ключам с одинаковым hashCode(), но для которых equals() == false?

По значению hashCode() вычисляется индекс ячейки массива, в список которой этот элемент будет добавлен. Перед добавлением осуществляется проверка на наличие элементов в этой ячейке. Если элементы с таким hashCode() уже присутствует, но их equals() методы не равны, то элемент будет добавлен в конец списка.

Какое начальное количество корзин в HashMap?

В конструкторе по умолчанию — 16, используя конструкторы с параметрами можно задавать произвольное начальное количество корзин.

Возможна ли ситуация, когда HashMap выродится в список даже с ключами имеющими разные hashCode()?

Это возможно в случае, если метод, определяющий номер корзины будет возвращать одинаковые значения.

Какова роль equals() и hashCode() в HashMap?

hashCode позволяет определить корзину для поиска элемента, а equals используется для сравнения ключей элементов в списке корзины и искомого ключа.

Каково максимальное число значений hashCode()?

Число значений следует из сигнатуры int hashCode() и равно диапазону типа int — 232.

Сколько создается новых объектов, когда вы добавляете новый элемент в HashMap?

Один новый объект статического вложенного класса Entry.

Будет ли работать HashMap, если все добавляемые ключи будут иметь одинаковый hashCode()?

Да, будет, но в этом случае HashMap вырождается в связный список и теряет свои преимущества.

Как перебрать все ключи Map?

Использовать метод keySet(), который возвращает множество Set ключей.

Как перебрать все значения Map?

Использовать метод values(), который возвращает коллекцию Collection значений.

Как перебрать все пары «ключ-значение» в Map?

Использовать метод entrySet(), который возвращает множество Set пар «ключ-значение».

В чем отличия TreeSet и HashSet?

TreeSet обеспечивает упорядоченное хранение элементов в виде красно-черного дерева. Сложность выполнения основных операций не хуже O(log(N)) (Логарифмическое время).

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

Источник

Collection vs Collections in java

Besides these similarities, they have few differences also.

Collection

Collection interface represents the root interface in the collection hierarchy. It contains the core methods for all collections. List, Set and Queue are immediate sub interfaces of Collection interface.

Map interface is also part of Java collection framework but it does not inherit the Collection interface.

public interface Collection extends Iterable

Collection Interface Methods

add() It is used to add the new element in the specified collection.
remove(Object o) It is used to remove the existing element from the specified collection.
size() It is used to get the number of elements in the specified collection.
clear() It is used to remove the all elements from the specified collection.
isEmpty() It is used to check whether the specified collection contains any element or not. It returns true if one or more element present the collection otherwise returns false.

Collections

Collections class in java represents an utility class in java.util package. It contains exclusively static methods that operate on or return collections. It consists of polymorphic algorithms that operate on collections, “wrappers”, which in turn return a new collection backed by a specified collection.

public class Collections extends Object

Collections Class Methods

Collections.sort() It is used to sort the elements in the specified collection.
Collections.min() It is used to get the minimum element in the specified collection.
Collections.max() It is used to get the maximum element in the specified collection.
Collections.binarySearch() It is used to search the specified element in the given collection. It uses binary search algorithm internally.
Collections.reverse() It is used to reverse the order of elements in the specified collection.
Collections.copy() It is used to copy all elements from one collection to the another collection.
Collections.shuffle() It is used to randomly shuffles the elements in the specified collection.
Collections.synchronizedCollection() It is used to synchronize the specified collection.
Collections.disjoint() It returns true if two given collections have no elements in common, otherwise returns false.
import java.util.*; public class Main { public static void main(String args[]) { //Createing ArrayList Object ArrayListString> students = new ArrayList<>(); //Adding elements to the ArrayList students.add("Jai"); students.add("Manish"); students.add("Vikram"); students.add("Mahesh"); students.add("Naren"); //Print ArrayList System.out.println("ArrayList elements: " + students); // Print minimum value System.out.println("Minimum value: " + Collections.min(students)); // print maximum value System.out.println("Maximum value: " + Collections.max(students)); } }

import java.util.*; public class Main < public static void main(String args[]) < //Createing ArrayList Object ArrayListstudents = new ArrayList<>(); //Adding elements to the ArrayList students.add(«Jai»); students.add(«Manish»); students.add(«Vikram»); students.add(«Mahesh»); students.add(«Naren»); //Print ArrayList System.out.println(«ArrayList elements: » + students); // Print minimum value System.out.println(«Minimum value: » + Collections.min(students)); // print maximum value System.out.println(«Maximum value: » + Collections.max(students)); > >

ArrayList elements: [Jai, Manish, Vikram, Mahesh, Naren] Minimum value: Jai Maximum value: Vikram

ArrayList elements: [Jai, Manish, Vikram, Mahesh, Naren] Minimum value: Jai Maximum value: Vikram

Difference between Collection and Collections

Collection Collections
It represents root level interface of Java Collection framework. It represents as utility class of Java Collection framework which consists of only static methods that operate on or return collections.
Since Java 8, It can contains static, abstract and default methods. It can only contains static methods.
It extends iterable interface. It extends Object class.

Java interview questions on collections

  • What is the difference between arraylist and vector in java?
  • What is the difference between arraylist and linkedlist?
  • What is the difference between Iterator and ListIterator?
  • What is the difference between Iterator and Enumeration?
  • what is the difference between list and set in java?
  • what is the difference between set and map in java?
  • what is the difference between hashset and treeset in java?
  • what is the difference between hashset and hashmap in java?
  • what is the difference between hashmap and treemap in java?
  • what is the difference between hashmap and hashtable in java?
  • what is the difference between collection and collections in java?
  • what is the difference between comparable and comparator interfaces?
  • what is the hashcode method in java?
  • Java equals method
  • Java hashCode method
  • Why to override hashcode and equals method in java?
  • How hashmap works intrnally?
  • How put and get works in hashmap?
  • How to resolve collision in hashmap?
  • How hashmap stores null key?
  • How hashset works intrnally?

Источник

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