java collections framework tutorial
Този урок обяснява подробно рамката на Java Collections (JCF), заедно с йерархията на колекциите, различни интерфейси и предимствата на JCF:
Надявам се тези красноречиви уроци за това Java Series за начинаещи са наистина полезни за обогатяване на вашите познания по Java.
Предишният ни урок разказа повече за основни I / O операции в Java . В този урок ще научим подробно за Java Collections Framework (JCF) в детайли.
Java Collections Framework (JCF) съдържа интерфейси, абстрактни класове и класове, които могат да осигурят архитектурата за съхраняване и манипулиране на група обекти.
Какво ще научите:
- Видео уроци за рамката на Java Collections
- Заключение
Видео уроци за рамката на Java Collections
Познаване на Arraylist в Java:
Задайте интерфейс и интерфейс на опашката в Java с примери в реално време:
HashMap, TreeMap и HashTable в Java:
Досега сме виждали променливи, които съхраняват различни видове данни. Това са единични единици и не са много полезни, когато имате огромни количества данни за съхранение и обработка. Както знаем, данните са най-важният компонент на компютърната обработка.
Вашето приложение трябва да може да извлича и събира данни, да го обработва, за да открие полезна информация, както и да го предава напред-назад, така че да се използва ефективно за достигане до решенията.
В този софтуерен свят съхраняваме данните, които трябва да бъдат структурирани по определен начин, така че софтуерните програми да могат да съхраняват, четат, обработват и накрая извеждат резултатите. Това се прави с помощта на структури от данни.
Почти всички програмни езици поддържат структури от данни. Структурата на данните може да бъде дефинирана като структурирано представяне на данни. Езиците за програмиране предоставят API (Application Programming Interface) функции за манипулиране на структурите на данните.
Рамка за необходимост от събиране
Преди Java 1.2 езикът за програмиране Java поддържаше структури от данни като масиви, вектори или хеш таблици. Извършването на операции с тези структури от данни не беше лесно, тъй като нямаше общ интерфейс, който да работи с тези структури от данни.
Програмистите се затрудняваха да напишат алгоритми, които да работят за всички структури от данни и представляваше голяма караница. Имаше нужда от общ интерфейс, който да работи последователно за всички структури от данни и също така да извършва операции ефективно.
По-късно Java излезе с рамка за колекции, която представлява група от класове и интерфейси, състоящи се от различни операции, които могат да бъдат изпълнени върху структури от данни.
В този урок за Java Collections ще обсъдим рамката за Java Collections като цяло. Ще проучим всеки от компонентите на колекцията в предстоящите ни уроци.
Рамка за колекции на Java
Преди да дефинираме Java Collections Framework, нека се запознаем със значението на collection и framework.
Колекцията може да се определи като група обекти. Колекцията обикновено е единична единица, състояща се от повече от един обект. Рамката е софтуер, който има готов функционален интерфейс или архитектура и също така съдържа набор от класове и интерфейси, които да се използват с предоставения интерфейс.
Рамката на колекциите се определя като единна, готова архитектура, състояща се от долу.
# 1) Алгоритми
Това са методи или набор от изявления, които могат да помогнат на програмистите при търсене, сортиране и обработка на събрани данни. Колекцията се предлага с интерфейси, класове и алгоритми.
Приложенията, разработени чрез наследяване на рамката за събиране, имат достъп до тези алгоритми и използват вече дефинираните методи и процедури.
# 2) Интерфейси
Интерфейсите в Java осигуряват абстракция на изпълнението, т.е.при използване на интерфейси потребителят не е запознат с подробностите за изпълнението, но може да вижда само методите и данните, необходими за писане на приложение. Интерфейсът за събиране има много интерфейси, които могат да бъдат внедрени от програмиста, за да напишат свои собствени класове.
# 3) Класове
Класовете на Collection Framework са структури от данни, които могат да бъдат внедрени в програма. Тези класове изпълняват интерфейса “Collection” и по този начин наследяват всички методи и дефиниции на интерфейса за събиране.
Рамката на колекция се използва за съхранение и манипулиране на колекцията, която е групата обекти.
Рамката за събиране на Java се състои от високоефективни алгоритми, които извършват стандартни операции като търсене, сортиране и обработка. Той предоставя различни стандартни реализации, включително LinkedList, TreeSet и HashSet, за които са предоставени интерфейси.
След това нека разберем йерархията на Java Collection.
Йерархия на Java Collection
Всички класове и интерфейси, показани в долната йерархия на Java Collection, принадлежат към пакета “java.util. *”.
Както е показано на горната диаграма, Йерархията на Java Collection се състои от различни класове и интерфейси. Както можете да видите, всеки от класа наследява от интерфейс, а всички класове и интерфейси от своя страна наследяват от един интерфейс за събиране.
Нека обсъдим някои често срещани методи в интерфейса за събиране, заедно с кратко въведение за всеки от класовете и интерфейсите, които са показани в горната йерархия.
Интерфейс за събиране
Интерфейсът за събиране е основният интерфейс. Всички класове в рамката за събиране изпълняват интерфейса за събиране. Това означава, че всяка колекция ще има декларирани методи в интерфейса на колекцията.
Някои от методите на интерфейса за събиране са дадени по-долу.
Недей | Прототип на метода | Описание |
---|---|---|
7 | булева стойност по подразбиране removeIf (предикатен филтър) | Премахнете всички елементи, които отговарят на дадения предикат ‘филтър’ от колекцията. |
1 | публичен int размер () | Връща броя на елементите в дадена колекция. |
две | public void clear () | Изчиства колекцията, като премахва всички елементи от нея. |
3 | публично булево добавяне (E e) | Вмъква елемент e в колекцията. |
4 | public booleanaddAll (Колекция c) | Вмъкнете всички елементи в колекцията, дадени от c, в колекцията. |
5 | публично булево премахване (елемент на обект) | Изтриване на елемента, даден от ‘element’ от колекцията. |
6 | публично логическо премахване на всички (Collectionc) | Премахнете колекцията c от колекцията. |
8 | public booleanretainAll (Колекция c) | Изтрийте всички елементи от колекцията с изключение на тези в посочената колекция c. |
9 | публичен итератор итератор () | Върнете итератор за колекцията. |
10 | публичен обект () toArray () | Преобразувайте колекцията в масив. |
единадесет | публичен T () toArray (T () a) | Преобразувайте колекцията в масив с определен тип връщане. |
12 | публичен булев isEmpty () | Връщане, ако колекцията е празна или не. |
13 | публично булево съдържа (елемент на обект) | Проверете дали колекцията съдържа дадения елемент (операция за търсене). |
14. | public booleancontainsAll (Collectionc) | Проверете дали колекцията съдържа определена колекция c вътре в нея. |
петнадесет | по подразбиране Spliterator spliterator () | Връща сплитератора над определена колекция. |
16. | публични booleanequals (елемент на обект) | Използва се за съвпадение на две колекции. |
17 | по подразбиране Stream parallelStream () | Връща паралелен поток, използващ колекцията като източник. |
18. | по подразбиране Streamstream () | Връща последователен поток, използващ колекцията като източник. |
19. | публичен int hashCode () | Връща числов хеш код на колекцията. |
Итерируем интерфейс
Интерфейсът Iterable е и основният интерфейс на рамката за събиране. Интерфейсът Collection, който е родителският интерфейс на всички останали класове, разширява интерфейса Iterable. Следователно всички класове реализират интерфейс за събиране, както и Iterable интерфейс.
Интерфейсът Iterable има само един итератор на метод (), който връща итератора (), който можете да използвате за итерация над елементите от тип T.
Iterator iterator ()
Интерфейс на итератор
Интерфейсът Iterator осигурява възможност за итерация над елементите в посока напред.
Следват методите, които се поддържат от този интерфейс.
Недей | Прототип на метода | Описание |
---|---|---|
1 | публичен обект следващ () | Първо връща елемента и след това премества курсора, за да сочи към следващия елемент. |
две | публичен булев hasNext () | Проверява дали итераторът има повече елементи. |
3 | public void remove () | Премахва елемента, който се връща от итератора в края. |
Списък Интерфейс
Интерфейсът на списъка наследява интерфейса за събиране. Списъкният интерфейс съдържа структурите от данни, които се използват за съхраняване на подредени данни или събиране на обекти. Тези структури от данни са от списъчен тип. Тези структури от данни, изпълняващи интерфейса на списъка, могат или не да имат дублирани стойности.
Списъкният интерфейс съдържа методите, които се използват за достъп, вмъкване или премахване на елементи от списъчните обекти.
Различни класове, които реализират интерфейса List са както следва:
тествайте уебсайта си в различни браузъри
- ArrayList
- LinkedList
- Вектор
- Стек
Ще обсъдим накратко всеки от тези класове. Следващите ни теми ще имат подробна дискусия за всеки от класовете на рамковата колекция.
# 1) ArrayList
ArrayList е най-простата реализация на интерфейса List. ArrayList запазва реда за вмъкване и не е синхронизиран.
Общата дефиниция на структурата от данни на ArrayList (Collection) е както следва:
List list1= new ArrayList ();
След като списъкът бъде дефиниран, можете да използвате метода ‘add’ за добавяне на елементи. Имайте предвид, че вътрешно ArrayList използва механизъм за динамичен масив.
Вижте следните примери, които създават ArrayList колекция от цветове.
import java.util.*; class Main { public static void main(String args()) { //Creating arraylist of String objects ArrayList color_list=new ArrayList(); //populate the arraylist with add method color_list.add('Red'); color_list.add('Green'); color_list.add('Blue'); color_list.add('Cyan'); color_list.add('Magenta'); color_list.add('Yellow'); //Traverse the list through Iterator Iterator itr=color_list.iterator(); System.out.println('The contents of the arraylist are:'); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Изход:
Горната програма показва демонстрацията на колекцията ArrayList. Добавяме цветни стойности към колекцията и след това обхождаме колекцията, за да покажем отделни стойности в колекцията с помощта на итератор.
# 2) LinkedList
Колекцията LinkedList използва вътрешно свързан списъчен механизъм за съхраняване на елементи. Може да съдържа дублиращи се елементи. Операциите за събиране на LinkedList са по-бързи, тъй като не е необходимо преместване на елементи.
Общата дефиниция за създаване на свързан списък е както следва:
List list2 = new LinkedList ();
Следващата програма демонстрира свързаната списъчна колекция от имена на номера .
import java.util.*; class Main { public static void main(String args()) { //linked list of String objects LinkedList linkedlist_num=new LinkedList(); linkedlist_num.add('one'); linkedlist_num.add('two'); linkedlist_num.add('three'); linkedlist_num.add('four'); linkedlist_num.add('five'); //iterate over the linked list to display contents Iterator itr=linkedlist_num.iterator(); System.out.println('The contents of the linked list are:'); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Изход:
По този начин ние създаваме свързан списък и след това добавяме елементи към него, използвайки метода ‘add’. След това с помощта на итератор обхождаме свързания списък и показваме всеки елемент.
# 3) Вектор
Vector е подобен на ArrayList и използва динамичен масив за съхраняване на елементите като ArrayList. Но вектор поддържа много независими методи, освен колекцията, което го прави по-добър избор да бъде предпочитана колекция.
Общата дефиниция за събиране на вектори е:
List list3 = new Vector();
Имайте предвид, че въпреки че vector и ArrayList използват един и същ механизъм на динамични масиви, векторните елементи се синхронизират.
Дадената по-долу програма Java демонстрира използването на вектори в рамката за събиране .
import java.util.*; public class Main { public static void main(String args()) { Vector subject_vector=new Vector(); subject_vector.add('English'); subject_vector.add('Hindi'); subject_vector.add('Maths'); subject_vector.add('Science'); Iterator itr=subject_vector.iterator(); System.out.println('Vector contents:'); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Изход:
В тази програма дефинирахме векторна колекция, състояща се от теми. Добавяме различни теми и след това използваме итератор за извеждане на елементите.
# 4) Стек
Структурата на стека на данни реализира начина на вмъкване на елементи (LIFO). Стекът е подклас на вектора на класа (вижте диаграмата на йерархията на колекциите по-горе). Освен собствените си методи, колекцията на стека също поддържа методите за векторно събиране.
Общото определение на колекцията на стека е:
List list4 = new Stack();
Следващата програма реализира събирането на стека .
import java.util.*; public class Main { public static void main(String args()) { Stack even_stack = new Stack (); even_stack.push(2); even_stack.push(4); even_stack.push(6); even_stack.push(8); even_stack.push(10); System.out.println('The element removed from stack: ' + even_stack.pop()); Iterator itr=even_stack.iterator(); System.out.println('The contents of the stack are:'); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } } }
Изход:
Както можете да видите в горното изпълнение, новите елементи се добавят към стека с помощта на „Напъвам“ операция. Стекът има една входна точка, наречена „Top of the stack“ и елементите се избутват върху стека в горната част. По този начин последният добавен елемент е в горната част на стека.
Подобно на добавянето, елементите също се премахват от единия край, т.е.в горната част на стека. За премахване на елементи се използва операция ‘pop’. По този начин, ако извикате pop (), елементът в горната част на стека ще бъде премахнат.
В изхода по-горе вмъкваме елемента 2, 4, 6,8,10 и след това извикваме pop (), така че 10 да бъде премахнат.
Интерфейс на опашката
Колекциите, получени от интерфейса на опашката, следват реда „първо в първото излизане“ (FIFO). Елементите се вмъкват в единия край и се отстраняват от другия край. Следователно елементът, въведен първи, е елементът, който е премахнат първи.
По-долу са дадени колекциите, които поддържат интерфейса на заявката.
- PriorityQueue
- и интерфейс
- ArrayDeque
Нека обсъдим накратко всяко от тях.
# 1) PriorityQueue
В колекцията PriorityQueue съхраняваните елементи се обработват въз основа на техните приоритети. Не можете да съхранявате нулеви стойности в приоритетната опашка.
Общото определение на приоритетната опашка е, както следва:
Queue q1 = new PriorityQueue();
Програмата по-долу изпълнява приоритетната опашка.
import java.util.*; public class Main { public static void main(String args()) { PriorityQueue color_queue=new PriorityQueue(); color_queue.add('red'); color_queue.add('green'); color_queue.add('blue'); color_queue.add('cyan'); color_queue.add('magenta'); color_queue.add('yellow'); System.out.println('Priority Queue elements:'); System.out.println('head:'+color_queue.peek()); System.out.println('Other elements in Priority Queue:'); Iterator itr=color_queue.iterator(); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } System.out.println('
'); color_queue.remove(); System.out.println('After removing element, new head:'+color_queue.element()); System.out.println('
'); color_queue.poll(); System.out.println('After removing another element, Priority Queue :'); Iterator itr2=color_queue.iterator(); while(itr2.hasNext()) { System.out.print(itr2.next() + ' '); } } }
Изход:
За пореден път използваме цветовете като елементи на приоритетната опашка. В горната програма използвахме методите add и remove за добавяне на елементи към опашката и премахване на елемент съответно. Използваме метода peek (), който връща елемент, към който сочи в приоритетната опашка.
Накрая с помощта на итератор се показват елементите на опашката с приоритет.
# 2) сензорен интерфейс
Deque или „опашка с двоен край“ е структура от данни, която ви позволява да добавяте и премахвате елементите от двата края. Deque интерфейсът в рамката за събиране на Java, който разширява интерфейса на опашката.
Той осигурява функционалността на deque и има клас, наследен от него ‘ArrayDeque’.
# 3) ArrayDeque
ArrayDeque изпълнява deque интерфейса.
Общата дефиниция на ArrayDeque е както следва:
Deque d = new ArrayDeque();
ArrayDeque ви позволява да използвате функционалността на Deque. За разлика от други колекции като ArrayList или стека, ArrayDeque няма ограничения за капацитета си.
Следващият пример показва изпълнението на ArrayDeque.
import java.util.*; public class Main { public static void main(String() args) { //Creating Deque and adding elements Deque deque = new ArrayDeque (); deque.add(10); deque.add(20); deque.add(30); System.out.println('Deque Elements:'); //Traversing elements for (Integer num : deque) { System.out.println(num); } } }
Изход:
В горната програма дефинираме колекция ArrayDeque от тип integer и добавяме цели числа към нея, използвайки метода add. След това колекцията се обхожда с помощта на конструкцията for.
Задаване на интерфейс
Зададеният интерфейс е част от пакета java.util и се простира от интерфейса за събиране. Set е структура, която не позволява на колекцията да има дублирани стойности, както и повече от една нулева стойност.
Следващите класове реализират зададения интерфейс.
- HashSet
- LinkedHashSet
- TreeSet
# 1) HashSet
Колекцията HashSet, която реализира интерфейс Set има различни стойности, съхранени в него. Тази колекция използва хешираща техника за съхраняване на елементите и използва хеш таблицата за съхраняване на елементи.
т общото определение на колекцията HashSet е показано по-долу.
Set s1 = new HashSet();
Дадохме внедряването на HashSet в следващата програма.
import java.util.*; public class Main { public static void main(String args()) { //Create HashSet set_subjects HashSet set_subjects=new HashSet(); System.out.println('Elements in the given hashsetset_subjects are:'); set_subjects.add('Maths'); set_subjects.add('Computers'); set_subjects.add('English'); set_subjects.add('French'); //Traverse the hashset Iterator itr=set_subjects.iterator(); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Изход:
В горната програма създаваме колекция от предмети на HashSet и след това я обхождаме с помощта на итератор за показване на елементите в колекцията.
# 2) LinkedHashSet
LinkedHashSet реализира зададен интерфейс и разширява HashSet (препратка към йерархията на колекцията). LinkedHashSet е свързаното представяне на списък на интерфейса Set. LinkedHashSet съдържа уникални елементи, но позволява нулеви стойности.
Общата дефиниция на LinkedHashSet е дадена по-долу.
Set s2 = new LinkedHashSet();
Внедряването на LinkedHashSet е дадено по-долу.
import java.util.*; public class Main { public static void main(String args()) { LinkedHashSet set_subjects=new LinkedHashSet(); System.out.println('Elements in the LinkedHashSet set_subjects:'); set_subjects.add('Maths'); set_subjects.add('Computers'); set_subjects.add('English'); set_subjects.add('Sanskrit'); Iterator itr=set_subjects.iterator(); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Изход:
За пореден път използваме заглавия на книги за създаване на Linkedhashset. Както можете да видите от изхода, редът на добавяне се поддържа от linkedHashSet.
Сортиран интерфейс
Интерфейсът SortedSet позволява пълно подреждане на елементи. Той съдържа методи, които осигуряват естествено подреждане на елементи. Елементите в колекцията, които реализират интерфейса SortedSet, са подредени в нарастващ ред.
Класът TreeSet е един от примерите, който реализира интерфейса SortedSet.
Treeset
Общата дефиниция на Treeset е както следва:
Set s3 = new TreeSet();
TreeSet реализира интерфейса SortedSet и съдържа уникални елементи. Съхранението и извличането са доста бързи и след това елементите се подреждат във възходящ ред.
import java.util.*; public class Main{ public static void main(String args()) { //create a treeset of integers TreeSet set_oddnums=new TreeSet (); set_oddnums.add(1); set_oddnums.add(3); set_oddnums.add(5); set_oddnums.add(7); set_oddnums.add(9); System.out.println('Elements in TreeSet are:'); //traverse the treeset using iterator Iterator itr=set_oddnums.iterator(); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } } }
Изход:
В горната програма създадохме и добавихме нечетни числа към колекцията, използвайки методи за добавяне. След това с помощта на итератор извеждаме елементите в колекцията.
Предимства на Java Collections Framework
- Намалено програмиране: Рамката Collections се предлага с всички интерфейси и класове, съдържащи методите, които могат да позволят на програмистите да напишат ефективна програма. По този начин програмистът не трябва да се фокусира върху твърде много програмиране.
- Съвместими методи и API: Всички класове имат общи методи, които действат върху данните. Тези API са съгласувани по време на класовете и програмистът не трябва да се притеснява, че има твърде много различни методи за всеки клас.
- Увеличете скоростта и точността: Можете да пишете високоефективни програми, използвайки рамка за събиране, а също и по-бързи и точни програми, тъй като рамката за събиране предоставя пълната функционалност за внедряване на структурите от данни и колекциите.
- Улеснява повторното използване на софтуера: Структурите на данни и алгоритмите на рамката за събиране на Java могат да се използват многократно.
- Оперативна съвместимост сред несвързани API: API за събиране позволяват оперативна съвместимост дори сред несвързани API.
- По-малко усилия за проектиране на нови API: Програмистите могат да използват стандартните API за събиране и да проектират нови API на базата на това. Те не трябва да се борят, за да напишат изцяло нови API.
често задавани въпроси
# 1) Каква е ползата от рамката за събиране в Java?
Отговор: Рамката за събиране предлага предварително пакетирани алгоритми, интерфейси и класове, които позволяват на програмистите да пишат високоефективни програми, които могат да съхраняват и обработват данни.
# 2) Защо Collection е рамка?
Отговор: Рамката е многократна колекция от класове, интерфейси и алгоритми. Рамката за събиране също е многократна колекция от класове на структурата на данни и алгоритми, работещи с тези класове.
# 3) Какво представлява Java Collections API в Java?
Отговор: API за колекции на Java предоставя интерфейси и класове, които могат да бъдат разширени и внедрени, за да се използват структури от данни, които не са нищо друго освен колекции.
# 4) Каква е разликата между колекция и колекции в Java?
Отговор: Колекцията е основен интерфейс в рамката на колекцията, докато ‘колекциите’ е клас. И двете са част от пакета java.util.
**** Повече подробности и примери за рамката на Java Collections: ****
Сравнение между списък, набор и опашка:
Списък | Комплект | Опашка |
---|---|---|
Редът за вмъкване се поддържа | Редът за вмъкване не се поддържа в Hash set | Редът за вмъкване се поддържа. |
Може да съдържа дублиращи се елементи | Не може да съдържа дублиращи се елементи | Може да съдържа дублиращи се елементи. |
Вмъкването и премахването на масив може да се направи за всеки индекс. | Премахнете посочения елемент. | Може да се изскочи само последният вмъкнат елемент. Също така, вмъкването на елементи се случва в края. |
Клас на списъка с масиви
В Array разпределението на паметта е фиксирано. Но в ArrayList паметта може да се разпределя динамично. Този клас ArrayList поддържа реда на вмъкване и можете да вмъкнете дублиращи се елементи.
Демо програма за списък с масиви:
public class ArrayListDemo { public static void main(String() args) { ArrayList li = new ArrayList (); li.add(1); li.add(2); li.add(3); li.remove(0); for (Integer temp : li) { System.out.println(temp); } System.out.println('=========='); ArrayList l = new ArrayList(); l.add('text1'); l.add('text2'); l.add('text3'); for (String temp : l) { System.out.println(temp); } System.out.println('=========='); ArrayList al=new ArrayList(); al.add(1); al.add(2); al.forEach((a)->;System.out.println(a)); } }
как да използвам .swf файлове
Клас LinkedList
Структурата от данни на свързания списък съдържа възли и този възел ще съдържа две части:
- Данни
- Препратка към следващия елемент
Първият възел не е отделен възел. Той съдържа само референцията и се нарича глава. Последният възел е нула.
Демо програма:
public class LinkedListDemo { public static void main(String() args) { LinkedList list =new LinkedList(); list.add(22); list.add(44); list.add(46); list.add(46); list.add(46); for(Integer temp:list) { System.out.println(temp); } Iterator it =list.iterator(); while(it.hasNext()) { System.out.println(it.next()); } System.out.println('=========='); for (int i=0;i 
Опашка
Опашката е структурата на данните first in first out (FIFO). Ако извикате метода за премахване, винаги първият вмъкнат елемент ще бъде премахнат от опашката. Така че, Queue се използва в приложение в реално време, където данните трябва да бъдат извлечени в добавения ред.
Примерна програма:
public class QueueDemo { public static void main(String() args) { PriorityQueue pq=new PriorityQueue(); pq.add(1); pq.add(2); pq.add(3); pq.add(4); pq.add(5); pq.add(6); pq.add(7); for(int temp : pq) { System.out.println(temp); } pq.remove(); System.out.println('queue after removing a element'); System.out.println(pq); } }

Комплект
Колекцията от набори няма да позволява дублиращи се елементи. Можете да използвате зададена структура от данни, когато искате да обработите събирането на данни без дублиране и когато няма нужда да поддържате реда за вмъкване.
Демо програма:
public class demohashset { public static void main (String() args){ HashSet hs=new HashSet(); hs.add(23); hs.add(24); hs.add(25); hs.add(26); hs.add(27); hs.add(28); hs.add(293); hs.add(203); hs.add(263); hs.add(243); hs.add(243); (int temp:hs) { System.out.println(temp); } hs.remove(24); hs.remove(23); System.out.println('==============='); System.out.println('after removing a element ::::'); System.out.println('==============='); hs.forEach((temp)->System.out.println(temp)); ; } }

MAP интерфейс
- Когато искате да събирате елементи от елементи с двойката ключ и стойност, тогава можете да използвате структурата на данните на картата, тъй като картата е обект, който може да съпостави ключовете на стойности.
- Картата не може да съдържа дублирани ключове.
- Важните реализации на map са HashMap, Treemap, LinkedHashMap, HashTable.
Разлика между HashMap, Treemap, LinkedHashMap и HashTable:
HashMap TreeMap LinkedHashmap HashTable Нулевите ключове и стойности са разрешени Разрешени са само нулеви стойности. Разрешени са нулеви ключове и стойности. Няма да позволи нулеви ключове и стойности. Не е синхронизирано Не е синхронизирано Не е синхронизирано синхронизирани Няма гаранция за поддържане на реда в итерацията Сортирането ще се извършва по естествен ред. Редът за вмъкване ще бъде запазен Редът за вмъкване не се поддържа.
Демо програма:
public class HashMapDemo { public static void main(String() args) { HashMap m=new HashMap(); m.put(1, 'one'); m.put(2, 'two'); m.put(3, 'three'); m.put(4, 'four'); m.put(null, 'one'); m.put(null, null); System.out.println(m); TreeMap tm =new TreeMap(); tm.put('R', 'red'); tm.put('B', null); tm.put('G', 'green'); System.out.println(tm); Hashtable ht =new Hashtable(); ht.put(1, 'one'); ht.put(2, 'two'); ht.put(3, 'three'); ht.put(4, 'four'); System.out.println(ht); } }

Основни моменти, които трябва да се отбележат:
- Списъкът, опашката, зададените интерфейси разширяват интерфейса за събиране и този интерфейс за събиране има общи методи като добавяне, премахване и т.н.
- Редът за вмъкване се поддържа в списък и набор не може да съдържа дублиращи се елементи. Опашката е първа в структурата на данните First out.
- Картата ще съдържа двойки ключ и стойност. HashMap, Treemap, Hashtable, Link HashMap са важното изпълнение на интерфейса на картата.
Заключение
Този урок ни даде въведение в рамката на Java Collections. Накратко засегнахме всички класове и интерфейси, които са част от рамката за колекция на Java.
В следващите ни уроци от тази поредица ще научим подробно за всеки от тези класове и интерфейси.
Можете да разгледате повече за Отражения в JAVA в нашия предстоящ урок !!!
Препоръчително четене
- Урок за отражение на Java с примери
- Уроци за задълбочено затъмнение за начинаещи
- Java SWING Урок: Контейнер, компоненти и обработка на събития
- Урок за JAVA за начинаещи: 100+ практически ръководства за Java видео
- Модификатори на достъп в Java - Урок с примери
- Java String с урок за String Buffer и String Builder
- Въведение в езика за програмиране на Java - видео урок
- Урок за краставици селен: Интеграция на краставица Java Selenium WebDriver