- Java Collection Framework
- Йерархия на рамката за събиране
- Интерфейс за събиране
- Итераторен интерфейс
The Колекция в Java е рамка, която предоставя архитектура за съхраняване и манипулиране на група от обекти.
Java Collections могат да постигнат всички операции, които извършвате върху данни, като търсене, сортиране, вмъкване, манипулиране и изтриване.
Java Collection означава единична единица от обекти. Рамката на Java Collection предоставя много интерфейси (Set, List, Queue, Deque) и класове ( ArrayList , вектор, LinkedList , PriorityQueue , HashSet, LinkedHashSet, TreeSet).
Какво е колекция в Java
Колекцията представлява единична единица от обекти, т.е. група.
Какво е рамка в Java
- Той предоставя готова архитектура.
- Той представлява набор от класове и интерфейси.
- Не е задължително.
Какво е рамка за събиране
Рамката на колекцията представлява унифицирана архитектура за съхраняване и манипулиране на група от обекти. То има:
- Интерфейси и техните реализации, т.е. класове
- Алгоритъм
Знаеш ли?
- Какви са двата начина за повторение на елементите на колекция?
- Каква е разликата между класовете ArrayList и LinkedList в рамката на колекцията?
- Каква е разликата между класовете ArrayList и Vector в рамката на колекцията?
- Каква е разликата между класовете HashSet и HashMap в рамката за събиране?
- Каква е разликата между класа HashMap и Hashtable?
- Каква е разликата между интерфейса на итератора и изброяването в рамката на колекцията?
- Как можем да сортираме елементите на обект? Каква е разликата между интерфейсите Comparable и Comparator?
- Какво означава методът hashcode()?
- Каква е разликата между Java колекция и Java колекции?
Йерархия на рамката за събиране
Нека видим йерархията на рамката на колекцията. The java.util пакетът съдържа всички класове и интерфейси за рамката на колекцията.
Методи за интерфейс за събиране
Има много методи, декларирани в интерфейса на колекцията. Те са както следва:
Не. | Метод | Описание |
---|---|---|
1 | публично булево добавяне (E e) | Използва се за вмъкване на елемент в тази колекция. |
2 | public boolean addAll(Collection c) | Използва се за вмъкване на посочените елементи от колекцията в извикващата колекция. |
3 | публично булево премахване (обектен елемент) | Използва се за изтриване на елемент от колекцията. |
4 | public boolean removeAll(Collection c) | Използва се за изтриване на всички елементи на посочената колекция от извикващата колекция. |
5 | по подразбиране boolean removeIf (филтър за предикати) | Използва се за изтриване на всички елементи от колекцията, които отговарят на зададения предикат. |
6 | public boolean retainAll(Collection c) | Използва се за изтриване на всички елементи на извикващата колекция, с изключение на указаната колекция. |
7 | public int size() | Връща общия брой елементи в колекцията. |
8 | публична невалидна изчистване() | Той премахва общия брой елементи от колекцията. |
9 | public boolean съдържа (обектен елемент) | Използва се за търсене на елемент. |
10 | публичен булев съдържа всички (Колекция c) | Използва се за търсене на посочената колекция в колекцията. |
единадесет | публичен итератор iterator() | Връща итератор. |
12 | публичен обект[] toArray() | Преобразува колекцията в масив. |
13 | публичен T[] toArray(T[] a) | Преобразува колекцията в масив. Тук типът по време на изпълнение на върнатия масив е този на посочения масив. |
14 | публичен булев isEmpty() | Проверява дали колекцията е празна. |
петнадесет | по подразбиране поток parallelStream() | Той връща евентуално паралелен поток с колекцията като негов източник. |
16 | поток по подразбиране stream() | Той връща последователен поток с колекцията като негов източник. |
17 | разделител по подразбиране spliterator() | Той генерира Spliterator върху посочените елементи в колекцията. |
18 | публични булеви равни (обектен елемент) | Съвпада с две колекции. |
19 | public int hashCode() | Връща номера на хеш кода на колекцията. |
Итераторен интерфейс
Итераторният интерфейс предоставя възможност за итериране на елементите само в посока напред. |
Методи на интерфейса на итератора
Има само три метода в интерфейса на Iterator. Те са:
Не. | Метод | Описание |
---|---|---|
1 | публичен булев hasNext() | Връща true, ако итераторът има повече елементи, в противен случай връща false. |
2 | публичен обект next() | Той връща елемента и премества показалеца на курсора към следващия елемент. |
3 | public void remove() | Той премахва последните елементи, върнати от итератора. Използван е по-малко. |
Итерируем интерфейс
Итерируемият интерфейс е основният интерфейс за всички класове на колекцията. Интерфейсът Collection разширява интерфейса Iterable и следователно всички подкласове на интерфейса Collection също имплементират интерфейса Iterable.
Съдържа само един абстрактен метод. т.е.
Iterator iterator()
Той връща итератора върху елементите от тип T.
бутон за центриране на css
Интерфейс за събиране
Интерфейсът на колекцията е интерфейсът, който се изпълнява от всички класове в рамката на колекцията. Той декларира методите, които ще има всяка колекция. С други думи, можем да кажем, че интерфейсът на колекцията изгражда основата, от която зависи рамката на колекцията.
Някои от методите на интерфейса на Collection са Boolean add ( Object obj), Boolean addAll ( Collection c), void clear() и т.н., които се изпълняват от всички подкласове на интерфейса Collection.
Списък интерфейс
Интерфейсът на списък е дъщерният интерфейс на интерфейса на колекцията. Той възпрепятства структура от данни от тип списък, в която можем да съхраняваме подредената колекция от обекти. Може да има дублиращи се стойности.
Интерфейсът на списъка се реализира от класовете ArrayList, LinkedList, Vector и Stack.
За да инстанцираме интерфейса List, трябва да използваме:
List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack();
Има различни методи в интерфейса на списъка, които могат да се използват за вмъкване, изтриване и достъп до елементите от списъка.
Класовете, които имплементират интерфейса List, са дадени по-долу.
ArrayList
Класът ArrayList имплементира интерфейса List. Той използва динамичен масив за съхраняване на дублиращия се елемент от различни типове данни. Класът ArrayList поддържа реда на вмъкване и не е синхронизиран. Елементите, съхранявани в класа ArrayList, могат да бъдат достъпни на случаен принцип. Помислете за следния пример.
import java.util.*; class TestJavaCollection1{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Ravi');//Adding object in arraylist list.add('Vijay'); list.add('Ravi'); list.add('Ajay'); //Traversing list through Iterator Iterator itr=list.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Изход:
Ravi Vijay Ravi Ajay
LinkedList
LinkedList имплементира интерфейса за събиране. Той използва двойно свързан списък вътрешно за съхраняване на елементите. Може да съхранява дублиращите се елементи. Той поддържа реда на вмъкване и не е синхронизиран. В LinkedList манипулацията е бърза, защото не е необходимо преместване.
Помислете за следния пример.
import java.util.*; public class TestJavaCollection2{ public static void main(String args[]){ LinkedList al=new LinkedList(); al.add('Ravi'); al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Изход:
Ravi Vijay Ravi Ajay
вектор
Vector използва динамичен масив за съхраняване на елементите от данни. Подобен е на ArrayList. Той обаче е синхронизиран и съдържа много методи, които не са част от рамката на колекцията.
Помислете за следния пример.
import java.util.*; public class TestJavaCollection3{ public static void main(String args[]){ Vector v=new Vector(); v.add('Ayush'); v.add('Amit'); v.add('Ashish'); v.add('Garima'); Iterator itr=v.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Изход:
Ayush Amit Ashish Garima
Стек
Стекът е подклас на Vector. Той прилага структурата на данните 'последен влязъл - първи излязъл', т.е. стек. Стекът съдържа всички методи на клас Vector и също така предоставя неговите методи като boolean push(), boolean peek(), boolean push(object o), който дефинира неговите свойства.
Помислете за следния пример.
import java.util.*; public class TestJavaCollection4{ public static void main(String args[]){ Stack stack = new Stack(); stack.push('Ayush'); stack.push('Garvit'); stack.push('Amit'); stack.push('Ashish'); stack.push('Garima'); stack.pop(); Iterator itr=stack.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Изход:
Ayush Garvit Amit Ashish
Интерфейс за опашка
Интерфейсът на опашката поддържа реда първи влязъл, първи излязъл. Може да се дефинира като подреден списък, който се използва за съхраняване на елементите, които предстои да бъдат обработени. Има различни класове като PriorityQueue, Deque и ArrayDeque, които имплементират интерфейса Queue.
Интерфейсът на опашката може да бъде създаден като:
Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque();
Има различни класове, които реализират интерфейса Queue, някои от тях са дадени по-долу.
PriorityQueue
Класът PriorityQueue имплементира интерфейса Queue. Той съдържа елементите или обектите, които трябва да бъдат обработени по техните приоритети. PriorityQueue не позволява нулеви стойности да се съхраняват в опашката.
Помислете за следния пример.
import java.util.*; public class TestJavaCollection5{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit Sharma'); queue.add('Vijay Raj'); queue.add('JaiShankar'); queue.add('Raj'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } }
Изход:
head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj
И интерфейсът
Интерфейсът Deque разширява интерфейса Queue. В Deque можем да премахваме и добавяме елементите от двете страни. Deque означава двустранна опашка, която ни позволява да изпълняваме операциите и в двата края.
Deque може да бъде инстанциран като:
Deque d = new ArrayDeque();
ArrayDeque
Класът ArrayDeque имплементира интерфейса Deque. Това ни улеснява да използваме Deque. За разлика от опашката, можем да добавяме или изтриваме елементи от двата края.
ArrayDeque е по-бърз от ArrayList и Stack и няма ограничения на капацитета.
Помислете за следния пример.
import java.util.*; public class TestJavaCollection6{ public static void main(String[] args) { //Creating Deque and adding elements Deque deque = new ArrayDeque(); deque.add('Gautam'); deque.add('Karan'); deque.add('Ajay'); //Traversing elements for (String str : deque) { System.out.println(str); } } }
Изход:
Gautam Karan Ajay
Задаване на интерфейс
Set Interface в Java присъства в пакета java.util. Той разширява интерфейса на колекцията. Той представлява неподреден набор от елементи, който не ни позволява да съхраняваме дублиращите се елементи. Можем да съхраним най-много една нулева стойност в Set. Наборът се изпълнява от HashSet, LinkedHashSet и TreeSet.
Наборът може да бъде създаден като:
Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet();
HashSet
Класът HashSet реализира Set Interface. Той представлява колекцията, която използва хеш таблица за съхранение. Хеширането се използва за съхраняване на елементите в HashSet. Съдържа уникални предмети.
Помислете за следния пример.
import java.util.*; public class TestJavaCollection7{ public static void main(String args[]){ //Creating HashSet and adding elements HashSet set=new HashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //Traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Изход:
Vijay Ravi Ajay
LinkedHashSet
Класът LinkedHashSet представлява имплементацията на LinkedList на Set Interface. Той разширява класа HashSet и имплементира интерфейс Set. Подобно на HashSet, той също съдържа уникални елементи. Той поддържа реда на вмъкване и позволява нулеви елементи.
Помислете за следния пример.
import java.util.*; public class TestJavaCollection8{ public static void main(String args[]){ LinkedHashSet set=new LinkedHashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Изход:
Ravi Vijay Ajay
Интерфейс SortedSet
SortedSet е алтернативата на интерфейса Set, който осигурява цялостно подреждане на своите елементи. Елементите на SortedSet са подредени във възходящ (възходящ) ред. SortedSet предоставя допълнителни методи, които възпрепятстват естественото подреждане на елементите.
SortedSet може да бъде създаден като:
SortedSet set = new TreeSet();
TreeSet
Класът Java TreeSet имплементира интерфейса Set, който използва дърво за съхранение. Подобно на HashSet, TreeSet също съдържа уникални елементи. Времето за достъп и извличане на TreeSet обаче е доста бързо. Елементите в TreeSet се съхраняват във възходящ ред.
Разгледайте следния пример:
import java.util.*; public class TestJavaCollection9{ public static void main(String args[]){ //Creating and adding elements TreeSet set=new TreeSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Изход:
Ajay Ravi VijayКакво ще научим в Java Collections Framework
- Клас ArrayList
- Клас LinkedList
- Списък интерфейс
- Клас HashSet
- Клас LinkedHashSet
- Клас TreeSet
- Клас PriorityQueue
- Интерфейс на картата
- Клас HashMap
- Клас LinkedHashMap
- Клас TreeMap
- Клас хеширана таблица
- Сортиране
- Сравним интерфейс
- Интерфейс за сравнение
- Клас свойства в Java