From f420ecb1268a49fdf95264dbf619d5947ce19f7f Mon Sep 17 00:00:00 2001 From: StNicolay Date: Sun, 15 Oct 2023 17:58:21 +0000 Subject: [PATCH] Java 15.10.2023 --- Java/Java.md | 205 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 191 insertions(+), 14 deletions(-) diff --git a/Java/Java.md b/Java/Java.md index 37b84bf..7e45396 100644 --- a/Java/Java.md +++ b/Java/Java.md @@ -412,17 +412,194 @@ x = y; // Автораспаковка Основные виды: -* Set - * HashSet - * TreeSet - * SortedSet -* List - * ArrayList - * LinkedList - * Vector - * Stack -* Map - * HashMap - * TreeMap - * SortedMap - * Hashtable +* *Set* + * *HashSet* + * *TreeSet* + * *SortedSet* +* *List* + * *ArrayList* + * *LinkedList* + * *Vector* + * *Stack* +* *Map* + * *HashMap* + * *TreeMap* + * *SortedMap* + * *Hashtable* + +### Итераторы + +Позволяет перебирать значения коллекций. Может использоваться для неупорядоченных коллекций + +```Java +Set set = new HashSet(); + +set.add("A"); +set.add("B"); + +Iterator iter = set.iterator(); + +while (iter.hasNext()) { + String text = iter.next(); + + System.out.println(text); +} +``` + +```Java +Map map = new HashMap(); + +map.put("first", "A"); + +Iterator> iter = map.entrySet().iterator(); + +while (iter.hasNext()) { + Map.Entry pair = iter.next(); + + String key = pair.getKey(); + String value = pair.getValue(); + + System.out.println(key + ":" + value); +} +``` + +Можно использовать *foreach* + +```Java +Set set = new HashSet(); + +set.add("A"); +set.add("B"); + +for (String text : set) { + System.out.println(text); +} +``` + +### ArrayList + +```Java +ArrayList nums = new ArrayList(); + +nums.add(5); +nums.add(5); +nums.add(5); +nums.add(5); +nums.add(5); + +System.out.println(nums.get(1)); +System.out.println(nums.indexOf(5)); +System.out.println(nums.contains(3)); + +nums.add(4, 3); // insert`ит на 4 индекс число 3 +nums.set(4, 5); // Меняет число на 4 индексе на 5 + +System.out.println(nums.toString()); +nums.clear(); +nums.add(5); +nums.add(5); +nums.add(5); + + +Integer[] numss = nums.toArray(new Integer[0]); + +nums = new ArrayList<>(Arrays.asList(numss)); + +Collections.sort(nums); +``` + +Ещё методы у Collections: + +* *min* +* *max* +* *reverse* +* *shuffle* +* *swap* +* *disjoint* - если есть пересечение коллекций, то false, иначе true + +#### Неизменяемый список + +```Java +List = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(1, 2, 3))); +``` + +### LinkedList + +*LinkedList* - двусвязный список + +```Java +LinkedList nums = new LinkedList(); + +nums.add(5); +nums.add(5); +nums.add(5); +``` + +Особые методы: + +* *addFirst* +* *addLast* +* *peekFirst* +* *peekLast* +* *pollFirst* - получить первый и удалить его (null, если пусто) +* *pollLast* + +### Vector + +*Vector* - синхронизированный *ArrayList*, который всё хранит как Object. Синтаксис страшный. + +### Stack + +*Stack* - LIFO + +Методы: + +* *empty* - возвращает bool +* *peek* +* *pop* +* *push* +* *search* - возвращает offset от вершины стека + +### Deque + +*Deque* - двунаправленный стек с фиксированной длинной + +Методы: + +* *addFirst* +* *addLast* +* *getFirst* - без удаления +* *getLast* +* *offerFirst* +* *offerLast* +* *peekFirst* +* *peekLast* +* *pollFirst* - с удалением +* *pollLast* + +### ArrayDeque + +*ArrayDeque* - двунаправленный стек с динамической длиной + +Методы: + +* *addFirst* +* *addLast* +* *getFirst* - без удаления +* *getLast* +* *pollFirst* - с удалением +* *pollLast* + +### HashSet + +Аля питон. Использует метод hashCode() для получения хеша значений + +Методы: + +* add +* remove +* contains +* size +* clear +* isEmpty +* iterator