logo

Колекције на Јави

  1. Јава Цоллецтион Фрамеворк
  2. Хијерархија оквира за прикупљање
  3. Интерфејс колекције
  4. Интерфејс итератора

Тхе Колекција на Јави је оквир који обезбеђује архитектуру за складиштење и манипулисање групом објеката.

Јава колекције могу да остваре све операције које обављате над подацима као што су претраживање, сортирање, уметање, манипулација и брисање.

Јава колекција означава једну јединицу објеката. Јава Цоллецтион фрамеворк пружа много интерфејса (Сет, Лист, Куеуе, Декуе) и класе ( Низ листа , вектор, ЛинкедЛист , ПриоритиКуеуе , ХасхСет, ЛинкедХасхСет, ТрееСет).

Шта је збирка у Јави

Колекција представља једну јединицу објеката, тј. групу.

Шта је оквир у Јави

  • Пружа готову архитектуру.
  • Представља скуп класа и интерфејса.
  • Није обавезно.

Шта је оквир за колекцију

Колекциони оквир представља јединствену архитектуру за складиштење и манипулацију групом објеката. Има:

  1. Интерфејси и њихове имплементације, односно класе
  2. Алгоритам

Да ли знаш?
  • Која су два начина за понављање елемената колекције?
  • Која је разлика између класа АрраиЛист и ЛинкедЛист у оквиру колекције?
  • Која је разлика између класа АрраиЛист и Вецтор у оквиру колекције?
  • Која је разлика између ХасхСет и ХасхМап класа у оквиру колекције?
  • Која је разлика између ХасхМап и Хасхтабле класе?
  • Која је разлика између интерфејса Итератор и Енумератион у оквиру колекције?
  • Како можемо сортирати елементе објекта? Која је разлика између упоредивог и упоредног интерфејса?
  • Шта ради метода хасхцоде()?
  • Која је разлика између Јава колекције и Јава колекција?

Хијерархија оквира за прикупљање

Хајде да видимо хијерархију оквира колекције. Тхе јава.утил пакет садржи све класе и интерфејси за оквир збирке.

Хијерархија оквира Јава колекције

Методе интерфејса колекције

Постоји много метода декларираних у интерфејсу колекције. Они су следећи:

Не.МетодОпис
1јавни логички додај (Е е)Користи се за уметање елемента у ову колекцију.
2јавни логички аддАлл (колекција ц)Користи се за уметање наведених елемената колекције у колекцију која позива.
3јавни логички уклони (елемент објекта)Користи се за брисање елемента из колекције.
4јавни логички ремовеАлл (колекција ц)Користи се за брисање свих елемената наведене колекције из колекције која позива.
5подразумевани логички ремовеИф (филтер предиката)Користи се за брисање свих елемената колекције који задовољавају наведени предикат.
6јавни логички ретаинАлл (колекција ц)Користи се за брисање свих елемената позивајуће колекције осим наведене колекције.
7публиц инт сизе()Враћа укупан број елемената у колекцији.
8публиц воид цлеар()Уклања укупан број елемената из колекције.
9јавни логички садржи (елемент објекта)Користи се за претрагу елемента.
10публиц боолеан цонтаинсАлл (колекција ц)Користи се за претрагу наведене колекције у колекцији.
Једанаестјавни итератор итератор()Враћа итератор.
12јавни објекат[] тоАрраи()Конвертује колекцију у низ.
13публиц Т[] тоАрраи(Т[] а)Конвертује колекцију у низ. Овде је тип времена извршавања враћеног низа онај из наведеног низа.
14јавни логички исЕмпти()Проверава да ли је колекција празна.
петнаестподразумевани ток параллелСтреам()Враћа евентуално паралелни ток са колекцијом као извором.
16подразумевани Стреам стреам()Враћа секвенцијални ток са колекцијом као извором.
17подразумевани Сплитератор сплитератор()Он генерише Сплитератор над наведеним елементима у колекцији.
18јавни логички једнак (елемент објекта)Поклапа се са две колекције.
19јавни инт хасхЦоде()Враћа хеш кодни број колекције.

Интерфејс итератора

Интерфејс итератора пружа могућност итерације елемената само у правцу унапред.

Методе интерфејса Итератора

Постоје само три методе у интерфејсу Итератор. Су:

Не.МетодОпис
1јавни логички хасНект()Враћа тачно ако итератор има више елемената, иначе враћа нетачно.
2јавни објекат нект()Враћа елемент и помера показивач курсора на следећи елемент.
3публиц воид ремове()Уклања последње елементе које је вратио итератор. Мање се користи.

Итерабле Интерфаце

Интерфејс Итерабле је основни интерфејс за све класе колекције. Интерфејс колекције проширује Итерабле интерфејс и стога све подкласе интерфејса Цоллецтион такође имплементирају Итерабле интерфејс.

Садржи само један апстрактни метод. тј.

 Iterator iterator() 

Враћа итератор преко елемената типа Т.

јава метода надјачавање

Интерфејс за колекцију

Интерфејс колекције је интерфејс који имплементирају све класе у оквиру колекције. Декларише методе које ће имати свака колекција. Другим речима, можемо рећи да интерфејс колекције гради основу од које зависи оквир за прикупљање.

Неки од метода интерфејса колекције су Булов адд ( Објецт обј), Боолеан аддАлл ( Цоллецтион ц), воид цлеар(), итд. које имплементирају све подкласе интерфејса колекције.


Интерфејс листе

Интерфејс листе је подређени интерфејс интерфејса колекције. Он инхибира структуру података типа листе у коју можемо да ускладиштимо уређену колекцију објеката. Може имати дупле вредности.

Интерфејс листе имплементирају класе АрраиЛист, ЛинкедЛист, Вецтор и Стацк.

Да бисмо инстанцирали интерфејс листе, морамо користити:

 List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack(); 

Постоје различите методе у интерфејсу листе које се могу користити за уметање, брисање и приступ елементима са листе.

Доле су дате класе које имплементирају интерфејс листе.


Низ листа

Класа АрраиЛист имплементира интерфејс Лист. Користи динамички низ за складиштење дуплираних елемената различитих типова података. Класа АрраиЛист одржава редослед уметања и није синхронизована. Елементима ускладиштеним у класи АрраиЛист може се приступити насумично. Размотрите следећи пример.

 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 

ЛинкедЛист

ЛинкедЛист имплементира интерфејс колекције. Интерно користи двоструко повезану листу за складиштење елемената. Може да складишти дуплиране елементе. Одржава редослед уметања и није синхронизован. У ЛинкедЛист-у, манипулација је брза јер није потребно померање.

Размотрите следећи пример.

 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 

Вецтор

Вецтор користи динамички низ за складиштење елемената података. Слично је АрраиЛист. Међутим, он је синхронизован и садржи многе методе које нису део оквира колекције.

Размотрите следећи пример.

 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 

Гомила

Стек је подкласа Вецтор. Он имплементира структуру података „последњи-први је изашао“, тј. Стацк. Стек садржи све методе векторске класе и такође обезбеђује њене методе као што су боолеан пусх(), боолеан пеек(), боолеан пусх(објецт о), који дефинише његова својства.

Размотрите следећи пример.

 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 

Куеуе Интерфаце

Интерфејс реда одржава редослед „први ушао-први изашао“. Може се дефинисати као уређена листа која се користи за чување елемената који ће бити обрађени. Постоје различите класе као што су ПриоритиКуеуе, Декуе и АрраиДекуе које имплементирају интерфејс Куеуе.

Интерфејс реда се може инстанцирати као:

 Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque(); 

Постоје различите класе које имплементирају интерфејс Куеуе, неке од њих су дате у наставку.


ПриоритиКуеуе

Класа ПриоритиКуеуе имплементира интерфејс Куеуе. Садржи елементе или објекте које треба обрадити према њиховим приоритетима. ПриоритиКуеуе не дозвољава чување нул вредности у реду.

Размотрите следећи пример.

 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 d = new ArrayDeque(); 

АрраиДекуе

Класа АрраиДекуе имплементира Декуе интерфејс. Олакшава нам коришћење Декуе-а. За разлику од реда, можемо додати или избрисати елементе са оба краја.

АрраиДекуе је бржи од АрраиЛист и Стацк и нема ограничења капацитета.

Размотрите следећи пример.

 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 s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet(); 

ХасхСет

ХасхСет класа имплементира Сет Интерфаце. Представља колекцију која користи хеш табелу за складиштење. Хеширање се користи за чување елемената у ХасхСет-у. Садржи јединствене предмете.

Размотрите следећи пример.

 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 

ЛинкедХасхСет

ЛинкедХасхСет класа представља ЛинкедЛист имплементацију Сет Интерфаце. Проширује класу ХасхСет и имплементира Сет интерфејс. Као и ХасхСет, такође садржи јединствене елементе. Одржава редослед уметања и дозвољава нулте елементе.

Размотрите следећи пример.

 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 set = new 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 
Шта ћемо научити у Јава Цоллецтионс Фрамеворк-у
  1. Класа АрраиЛист
  2. ЛинкедЛист цласс
  3. Интерфејс листе
  4. ХасхСет класа
  5. ЛинкедХасхСет класа
  6. ТрееСет цласс
  7. ПриоритиКуеуе класа
  8. Интерфејс карте
  9. ХасхМап класа
  10. ЛинкедХасхМап класа
  11. ТрееМап класа
  12. Хасхтабле класа
  13. Сортирање
  14. Упоредиви интерфејс
  15. Интерфејс компаратора
  16. Класа својстава у Јави