Представляют набор логически связанных констант. Объявление перечисления происходит с помощью оператора enum, после которого идет название перечисления. Затем идет список элементов перечисления через запятую:
enum Day{
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}Перечисления, как и обычные классы, могут определять конструкторы, поля и методы. Позволяет создавать константы с полями.
enum Color{
RED("#FF0000"), BLUE("#0000FF"), GREEN("#00FF00");
private String code;
Color(String code){
this.code = code;
}
public String getCode(){ return code;}
}ArrayList()// создает пустой список
ArrayList(Collection <? extends E> col)// создает список, в который добавляются все элементы коллекции col.void add(int index, E obj)// добавляет в список по индексу index объект objboolean addAll(int index, Collection<? extends E> col)// добавляет в список по индексу index все элементы коллекции col. Если в результате добавления список был изменен, то возвращается true, иначе возвращается falseE get(int index)// возвращает объект из списка по индексу indexint indexOf(Object obj)// возвращает индекс первого вхождения объекта obj в список. Если объект не найден, то возвращается -1E remove(int index)// удаляет объект из списка по индексу index, возвращая при этом удаленный объектE set(int index, E obj)// присваивает значение объекта obj элементу, который находится по индексу indexvoid sort(Comparator<? super E> comp)// сортирует список с помощью компаратора compList<E> subList(int start, int end)// получает набор элементов, которые находятся в списке между индексами start и end
Интерфейс Map содержит основные реализации: Hashmap, LinkedHashMap, Hashtable, TreeMap.
Коллекция "ключ-значение", все ключи уникальны в рамках объекта Program.
Облегчает поиск значения, если известен ключ - уникальный итендификатор.
HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(1, "one"); // добавление элемента, если в коллекции уже есть элемент с подобным ключом, то он перезаписывается
hashMap.put(2, "two");
hashMap.put(3, "three");
hashMap.get(1); // Получение значения по ключу или null, если значение отсутствует
hashMap.get(2);
hashMap.get(3);for (Map.Entry entry : hashMap.entrySet()) // entrySet() - возвращает множество элементов коллекции
{
System.out.print("key: " + entry.getKey()); // getKey() - получить ключ сущности
System.out.println("; value: " + entry.getValue()); // getKey() - получить значение сущности
}// key list
List<Integer> keyList = new ArrayList<>(map.keySet());
// value list
List<String> valueList = new ArrayList<>(map.values());
// key-value list
List<Map.Entry<Integer, String>> entryList = new ArrayList<>(map.entrySet());//map<String, Int>
while ((line = bufferedReader.readLine()) != null) {
String[] words = line.split("\\W"); {
for (String word : words) {
if (word.equals("")) {
continue;
}
if (!map.containsKey(word)) {
map.put(word, 1);
} else {
map.put(word, map.get(word) + 1);
}
}
}
}void clear() // очищает коллекцию
int size() // возвращает количество элементов коллекции
boolean containsKey(Object k) // возвращает true, если коллекция содержит ключ k
boolean containsValue(Object v) // возвращает true, если коллекция содержит значение v
int size() // возвращает количество элементов коллекции
replace(ключ, значение); // заменить значение элемента по ключу
remove(ключ); // удаление элемента по ключуLinkedHashMap - отображение с запоминанием порядка, в котором добавлялись элементы, разрешает перебор в порядке вставки.
// ====LinkedHashMap====
System.out.println("LinkedHashMap");
LinkedHashMap <Integer, String> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put(1, "one");
linkedHashMap.put(3, "three");
linkedHashMap.put(4, "four");
linkedHashMap.put(2, "two");
for (Map.Entry entry : linkedHashMap.entrySet()) {
System.out.println("key: " + entry.getKey() + "; value = " + entry.getValue());
}
// ====HashMap====
System.out.println("\nHashMap");
HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(1, "one");
hashMap.put(3, "three");
hashMap.put(4, "four");
hashMap.put(2, "two");
for (Map.Entry entry : hashMap.entrySet()) {
System.out.println("key: " + entry.getKey() + "; value = " + entry.getValue());
}
// Результат
LinkedHashMap
key: 1; value = one
key: 3; value = three
key: 4; value = four
key: 2; value = two
HashMap
key: 1; value = one
key: 2; value = two
key: 3; value = three
key: 4; value = fourMap сортирующая элементы по ключу. Позволяет как создавать изначально отсортированные мапы или
сортировать уже существующие.
LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<>(); // неотсортированная мапа
linkedHashMap.put("xxx", 5);
linkedHashMap.put("a", 3);
linkedHashMap.put("ccc", 1);
linkedHashMap.put("b", 2);
for (Map.Entry entry : linkedHashMap.entrySet()) {
System.out.println("key: " + entry.getKey() + "; value: " + entry.getValue());
}
System.out.println("\n");
TreeMap<String, Integer> treeMap = new TreeMap<>(linkedHashMap); // Передача неотсортированной мапы для сортировки
for (Map.Entry entry : treeMap.entrySet()) {
System.out.println("key: " + entry.getKey() + "; value: " + entry.getValue());
}
//Результат
key: xxx; value: 5
key: a; value: 3
key: ccc; value: 1
key: b; value: 2
key: a; value: 3
key: b; value: 2
key: ccc; value: 1
key: xxx; value: 5HashTable хранит пары ключей/значений в хэш-таблице. В качестве ключа выступает хэш-код переданного объекта, который используется как индекс.
Каждый элемент хранится только в одном экземпляре, разные реализации
Setиспользуют разный порядок хранения элементов.
Если порядок хранения важен, применяется TreeSet, в котором объекты хранятся отсортированными по возрастанию
или LinkedHashSet. с хранением элементов в порядке добавления.
HashSet<String> countries = new HashSet<>(); // Создание множества
countries.add("Россия"); // добавление элемента в множенство
countries.add("Франция"); // если такого элемента нет
countries.add("Испания"); // возвр. true - если добавился элемент иначе falseiterator() - метод позволяющий получить все множество элементов.
Iterator<String> iterator = countries.iterator(); // Создание итератора
while (iterator.hasNext()) {
System.out.println(iterator.next());
}int size() // размер
boolean isEmpty()
boolean contains(Object o)
boolean addAll(Collection c)
Object[] toArray()
boolean remove(Object o)
boolean removeAll(Collection c)
void clear()Не добавляет новых методов. ласс поддерживает связный список элементов набора в том порядке, в котором они вставлялись. Это позволяет организовать упорядоченную итерацию вставки в набор.
Random random = new Random();
SortedSet<Integer> sortedNumbers = new TreeSet<>(); //Создаие TreeSet
for (int i = 0; i < 5; i++) {
sortedNumbers.add(random.nextInt(10));
}
// Результаты работы
Элементы отсортированы по возрастанию, размер множества меняется, так как повторяющиеся
элементы не добавляются, а игнорируются
[0, 4, 6, 9]
[0, 1, 2, 4, 8]
[2, 3, 9]Содержит только значения перечисления, принадлежащие к тому же типу перечисления, элементы хранятся в порядке
их сохранения. Он не позволяет пользователю добавлять значения NULL и создает исключение NullPointerException.