Bu makala, yzygiderli ýygyndylara esaslanandygy sebäpli düşünmek iň aňsat bolan Kolleksiýa çarçuwasyndan “ArrayList” synpyna jikme-jik sereder. Söhbetdeşlikde size bu synp we Java-da durmuşa geçirilişi barada sorag berler. Ikinji bölümde galan usullary seljereris we sanlar üçin dinamiki massiwiň ýerine ýetirilişini ýazarys. ArrayList synpy AbstractList synpyndan miras alýar we aşakdaky interfeýsleri amala aşyrýar: Sanaw, RandomAccess, Cloneable, Serializable. “ArrayList” synpynyň jikme-jik derňewi [2-nji bölüm] “ ArrayList” synpy zerur bolanda giňeldilip bilinjek dinamiki massiwleri goldaýar. Onuň zerurlygy we täsirliligi yzygiderli bir massiwiň kesgitli uzynlygy bilen düşündirilýär: döredilenden soň ösüp ýa-da kiçelip bilmeýär, bu massiwiň näçeräk zerur boljakdygy belli bolmasa çäklendirmeleri girizýär. Aslynda, “ArrayList” synpy obýektleriň salgylanmalarynyň üýtgeýän uzynlyk sanawydyr. Içerki massiwiň ululygynyň (öýjükleriň sany) elementler ondan aýrylanda awtomatiki azalmaýandygyna düşünmek möhümdir.
Şeýlelik bilen, bir element indeksde goýlanda we massiwde boş ýerler ýok bolsa, jaň
Şeýle hem, kolleksiýamyza elementleri goşup bilersiňiz
3-nji indeksdäki elementi aşakdaky massiwden aýyrmaga synanyşalyň:
Usulyň ikinji wersiýasyna seredeliň:
Geçen kolleksiýa degişli bolmadyk elementleri aýyrýar:
Aygyndymyz bar diýeliň:
Elementleri çalyşmak
Toplumy elementler üçin barlaň:
size
Aslynda, massiwde bar bolan elementleriň sanyny görkezýän üýtgeýjiniň bahasy azalýar. “ArrayList” synpynyň täze obýektini döredýäris we oňa 5 element goşýarys diýeliň. Düzgüne görä, 10 elementden ybarat massiw döredilýär. Bu ýagdaýda obýektimiziň kuwwaty (ululygy / göwrümi) diýilýän zat 10-a deň bolar, ýöne üýtgeýjiniň bahasy size
bäşe deň bolar. Elementleri aýyranymyzda, üýtgeýjiniň bahasynyň üýtgemegini görýäris size
, sebäbi .length
ArrayList synpynyň içki massiwine girip, onuň uzynlygyny bilip bilmeris. Ululygy trimToSize()
soňrak ara alnyp maslahatlaşyljak goşmaça usul bilen kiçeldilip bilner. Synp meýdanlaryna seredeliň.
-
Dinamiki massiwiň deslapky göwrümi üçin jogapkär meýdan:
private static final int DEFAULT_CAPACITY = 10
Täze ArrayList <> () (parametrleri bolmadyk konstruktor) täze obýekt döredilende içerde 10 elementden ybarat massiw döredilýär.
-
Theygyndynyň ähli elementleriniň saklanýan ýeri:
transient Object[] elementData
Açar söz bilen bellendi
transient
- adaty seriallaşdyrma algoritmini ulananyňyzda meýdan baýt akymyna ýazylmaýar. Meýdanyň açar söz bilen bellenmändigini bellemelidirisprivate
, ýöne bu höwürtgelenen synplardan (mysal üçin SubList) bu meýdana girmegi aňsatlaşdyrmak üçin edildi. - Aslynda massiwde elementleriň sanyny saklaýan hasap meýdany:
private int size
Goýmak we pozmak ýaly amallary ýerine ýetireniňizde bahasy ýokarlanýar / azalýar.
public ArrayList()
- 10 elementden ybarat boş sanaw sanawyny döredýär;public ArrayList(Collection < ? extends E > c)
- geçen ýygyndydan elementler bilen başlanan sanaw sanawyny döredýär (käbir kolleksiýa esasynda täze ArrayList döretmek islesek);public ArrayList(int initialCapacity)
- başlangyç kuwwaty bolan sanaw sanawyny döredýär. Geçirilen parametr başlangyçCapacity 0-dan uly bolsa, görkezilen ululykdaky bir massiw döredilýär (içerki meýdan elementiData täze görnüş massiwine baglanyşyk berilýär. Parametr 0 bolsa, boş massiw döredilýär. Görkezilen parametr 0-dan az bolsa, onda IllegalArgumentException zyňylýar.
List < String> list = new ArrayList<>();
Täze döredilen obýekt list
häsiýetleri (meýdanlary) elementData
we size
. Gymmatlyk dükany, biziň ýagdaýymyzda elementData
belli bir görnüşdäki (umumy görnüşde görkezilen) massiwden başga zat däl . Parametrleri bolmadyk konstruktor çagyrylsa, deslapky görnüşde Obýekt görnüşiniň 10 elementinden ybarat massiw dörediler (görnüşine guýmak bilen). Elementleri goşmak Klassiki elementleri sanaw sanawyna goşmak, artykmaç ýüklenen wariantlary ulanmak arkaly amala aşyrylýar . <>
String[]
add()
public boolean add(E элемент)
Geliň, goşalyň: list.add("0");
Bu usulyň içinde usulyň artykmaç görnüşi add()
diýilýär, bellik edilýär private
, bu bolsa öz gezeginde üç parametr alýar: goşulmaly element, içki massiw we ululygy. Şahsy usulda barlag ýüze çykýar: eger geçen ululyk parametri içerki massiwiň uzynlygyna deň bolsa (ýagny, massiw doly), onda massiw usulyň netijesi ( grow(int minCapacity)
meýdanyň häzirki bahasy) berilýär ululygy + 1 usula geçirilýär, sebäbi goşulýan elementi göz öňünde tutmaly), içerki massiwde asyl massiwiň elementlerini göçürmek arkaly alnan täze döredilen massiw bilen baglanyşyk berilýär:
Arrays.copyOf(elementData, newCapacity(minCapacity))
Usulyň ikinji parametri hökmünde, täze massiw ölçegi hasaplanýan copyOf
usulyň netijesini görkezýäris . newCapacity(int minCapacity)
Aşakdaky formula bilen hasaplanýar: int newCapacity = oldCapacity + (oldCapacity >> 1)
Adaty ululykdaky massiw üçin aşakdakylar dogry bolar: >> 1
- birneme sag tarapa süýşüriň (bir sanyny ýarysyna çenli azaldýan operator). Aslynda, 1-iň güýjüne 2-e bölmek diýmekdir. 10-dan 2-e bölýäris we 10-a goşýarys. Jemi, massiwiň täze kuwwaty 15, ýöne 11-nji elementi goşýandygymyz üçin 15 + 1 = 16. Geliň, sanawymyza gaýdyp geleliň we oňa eýýäm 10 element goşduk we 11 goşmaga synanyşalyň öýdýän. Çek, massiwde boş ýeriň ýokdugyny görkezer. Arrays.copyOf
Şoňa laýyklykda ulgam usulyny ulanýan täze massiw döredilýär we atlandyrylýar System.arraycopy()
. Ora-da JavaRush-daky bir makaladan aýdyň mysal: Bu barlaglaryň hemmesinden we zerur bolsa massiwiň göwrümini ulaltmakdan soň, şahsy usulda add()
massiwiň soňuna täze element goşulýar we häzirki parametr size
bir köpelýär . Köne massiw soňra zibil ýygnaýjy tarapyndan gaýtadan işlener. Dinamiki massiwiň işleýşi şeýle: elementleri goşanymyzda, entegem ýeriň bardygyny ýa-da ýokdugyny barlaýarys. Boş ýer bar bolsa, elementi massiwiň soňuna goşarys. Ahyry massiwdäki iň soňky öýjügi däl-de, gymmata laýyk öýjügi aňladýar size
. Ilkinji elementi massiwde goşduk, indeks bilen öýjüge ýerleşdirildi [0]. Meýdanyň bahasy size
bir we = 1 ýokarlandy. Indiki elementi goşýarys: şoňa size = 1
görä elementi öýjüge indeks [1] we ş.m. goýýarys. Iki parametrli usulyň artykmaç görnüşi bar:
public void add(int index, E element)
Element goşmak isleýän öýjügimiziň ýagdaýyny (indeksini) kesgitläp bileris. Ilki bilen, görkezilen indeks bahasynyň dogrulygy barlanýar, sebäbi hiç zat ýok ýa-da ýok bolan öýjügi görkezýän nädogry indeks görkezilmegi mümkin. Indeksleri barlamak: index > size || index < 0
- görkezilen görkeziji massiwiň häzirki ululygyndan uly bolsa ýa-da 0-dan pes bolsa, onda kadadan çykma bolýar IndexOutOfBoundsException
. Soň bolsa, zerur bolsa, ýokardaky mysala meňzeş massiwiň ululygy ýokarlanýar. Bir massiwdäki amallary goşmak / aýyrmak wagtynda bir zadyň (sag ýa-da çepe) geçirilýändigini eşiden bolsaňyz gerek. Şeýlelik bilen, smena massiwi göçürmek arkaly amala aşyrylýar: System.arraycopy(elementData, index, elementData, index + 1, s - index);
Görkezilen indeksiň sag tarapynda ýerleşýän ähli elementler bir pozisiýa saga (indeks + 1) geçiriler. Diňe şondan soň görkezilen görkezijide içerki massiwde täze element goşulýar. Toplumyň bir bölegini sag tarapa geçirendigimiz üçin (täze massiw döredilmeýär), zerur öýjük ýazmak üçin mugt bolar. Köne massiwdäki baglanyşyk öçürildi we geljekde zibil ýygnaýjy tarapyndan ele geçiriler. "Maserati" öýjügine [3] goýuň, ol eýýäm eýeleýär:
System.arraycopy()
iki gezek bolar: birinjisi grow()
, ikinjisi usulyň özünde add(index, value)
, bu goşma amalynyň tizligine aç-açan täsir eder. Netijede, içerki massiwde başga bir element ýazmak zerur bolsa, ýöne ol ýerde boş ýer ýok bolsa, “ArrayList” -iň içinde şeýle bolýar:
- Asyl nusgasyndan 1,5 esse uly we bir element bilen täze massiw döredilýär.
- Köne massiwdäki ähli elementler täze massiwde göçürilýär
- Täze massiw “ArrayList” obýektiniň içki üýtgeýjisinde saklanýar we köne massiw zibil diýlip yglan edilýär.
public void ensureCapacity(int minCapacity)
Aralyk kuwwatyny öňünden köpeltmek bilen, soňra RAM-yň goşmaça paýlanmagynyň öňüni alyp bilersiňiz. Usul, geçen elementleriň sanyny ýerleşdirmek üçin içerki massiwiň ululygyny ýokarlandyrýar minCapacity
. Usul ensureCapacity()
meýdana täsir etmeýär , içki massiwine (ululygyna) size
täsir edýär . capacity
Bothene-de bir gezek belläp geçýärin, size
ikisem capacity
dürli zat we olary bulaşdyrmazlyk gaty möhümdir! “ArrayList” -iň gurlan esasy massiwiniň göwrümini häzirki saklanýan elementleriň sanyna çenli azaltmak isleseňiz, jaň etmeli trimToSize()
. Toplumdan elementleri aýyrandan soň, size()
aslynda bar bolan elementleriň sanyny görkezer we capacity
azalmaz! Aýdalyň: 100 elementi girizdik, ilkinji 50-ni pozduk, size
50-e deň bolar we capacity
100-e galar. Azaltmak üçin , ähli güýjümizi häzirki ululyga laýyklaşdyrýan capacity
usuly ulanmalydyrys . trimToSize()
Bu nähili gabat gelýär? Boş öýjükler galmaz ýaly massiwimizi göçüriň (täze massiwiň uzynlygy ululyk meýdanyna deňdir).
addAll
.
public boolean addAll(Collection< ? extends E> c)
public boolean addAll(int index, Collection< ? extends E> collection);
Birinji wariant, usul parametrinde görkezilen ýygyndydan (mysal üçin, başga bir sahypa) usul çagyryşynyň edilen asyl kolleksiýasyna (ahyrynda goýuň) ähli elementleri goşmaga mümkinçilik berýär. Geçirilen kolleksiýa (toplumy hem bolup biler) ulanyp, massiwine öwrüler toArray()
. Elbetde, goşmak amaly göçürmek arkaly hem amala aşyrylýar. Ikinjisi, collection
indeksden başlap, sanawa ähli elementleri goşmak index
. Bu ýagdaýda sanawdaky elementleriň sany boýunça ähli elementler sag tarapa geçer collection
. Elementleri aýyrmak Ilki bilen, “ArrayList” -den elementleri aýyrmagyň nusgawy wariantlaryna seredeliň.
public E remove(int index)
Indeks boýunça öçürmegi ýerine ýetirýär we indiki (görkezilen indeksdäki elementden soň) elementleri çepe geçirýär we şeýlelik bilen “deşikleri” ýapýar. Şeýle hem, öçürilmezden ozal goşmaça üýtgeýjä ýazylan öçürilen elementi (E) yzyna gaýtaryp berýär, usuly çagyryş netijesinde alýan gymmaty. E-iň nämedigine düşünmek üçin umumy görnüşler bilen tanyş bolmaly bolarsyňyz. E belligi, usulyň ArrayList obýekti döredilende görkezilen maglumat görnüşini yzyna gaýtaryp berýändigini görkezýär (ýadyňyzda saklaň: List <String> list
şoňa görä bu ýagdaýda E “çalşylýar” String
). Umumy düşünmek üçin umumy görnüşler bilen tanyşmagyňyzy maslahat berýärin. Girizilen indeksiň dogrulygy barlanýar, soňra usulyň içinde element düýbünden ýok edilmeýär, ýöne fastRemove(Object[] es, int i)
öçürmek eýýäm bolup geçýän hususy usul diýilýär. Biz öz massiwimizi we görkezilen görkezijini giriş hökmünde usula geçirýäris. Elementler ulanylyp göçürilýär System.arraycopy()
, massiwiň ululygy azalýar, soň bolsa soňky elemente null belläris. Täze bir massiwiň döredilmändigini bellemelidiris: System.arraycopy(es, i + 1, es, i, size - 1 - i);
Görkezilen indeksiň (i + 1) aşagyndaky pozisiýanyň sag tarapyndaky bölegi asyl massiwimize göçürilýär we ol şol ýerden başlaýar. (i) ýok edilmeli elementiň ýerleşýän ýeri. Şeýlelik bilen, çepe süýşüp, elementimizi pozduk.
public boolean remove(Object o)
Usul geçen elementi sanawdan o
, has dogrusy, görkezilen baglanyşykdaky obýekti aýyrýar. Sanawda bir element bar bolsa, ol aýrylýar we ähli elementler çepe geçirilýär. Sanawda element bar bolsa we üstünlikli aýrylsa, usul dogry gaýdyp geler, ýogsam ýalňyş. Indeks bilen öçürmek opsiýasyna meňzeş usul fastRemove()
, edil şol bir hereketleriň ýüze çykýan ýerinde diýilýär. Tapawut, bu usul goşmaça obýekt synpy remove(Object o)
usuly arkaly islenýän zady gözleýär . equals()
Bahasy bilen aýrylanda, aýlaw tapylýança aýlaw sanawyň ähli elementlerinden geçýär. Diňe tapylan ilkinji element ýok ediler. Gysgaça jemläliň: dinamiki massiwdäki elementleri pozanyňyzda, adaty massiwdäki ýaly deşik galmaýar (öçürilen öýjük boş bolmaz). Ondan soňky ähli elementler (indeksiň sag tarapynda) bir pozisiýa çepe geçirilýär. Sanawdan elementleri dürli derejelere çykarmak üçin ulanyp boljak birnäçe goşmaça usul bar. Geliň, olara gysgaça seredeliň. Kolleksiýamyzy arassalamak:
public void clear()
Simpleönekeý aýlaw, for
her elemente null belläp, massiwiň ähli elementleriniň üsti bilen gaýtalanýar. Şuňa meňzeş başga bir kolleksiýadaky elementleri kolleksiýamyzdan aýryp bilersiňiz:
public boolean removeAll(Collection< ?> c)
Birnäçe elementi aýyrmaly bolsaňyz, şertli aýlawda etmeli dälsiňiz: usuly ulanmak has amatly we has ygtybarly removeAll()
. Sanawdan aýryljak elementleriň ýygyndysyny kabul edýär. Theygyndyda maksat sanawynyň saklaýan görnüşi bar. Otherwiseogsam zyňylar ClassCastException
. Usul çagyryşynyň netijesinde sanaw üýtgedilen bolsa, usul hakyky bolar.
public boolean retainAll(Collection< ?> c)
List< String> listFirst = new ArrayList<>();
listFirst.add("White");
listFirst.add("Black");
listFirst.add("Red");
Ikinjisi:
List< String> listSecond = new ArrayList<>();
listSecond.add("Green");
listSecond.add("Red");
listSecond.add("White");
listSecond.retainAll(listFirst)
Ondan soň listSecond
galar:
"White"
"Red"
"Greenaşyl" aýrylansoň, ýok listFirst
. listSecond.removeAll(listFirst)
Emma şondan soň listSecond
galar:
"Green"
Удалorсь все элементы, которые есть в listFirst.
Geçirilen kolleksiýa degişli däl - geçen kolleksiýada ýok elementler bar bolsa, olary birinjisinden aýyrmaly (bu usul ulanylýar). Geçirilen kolleksiýa degişlidir - şoňa görä, birinji we ikinji (geçirilen) kolleksiýalarda bir element bar bolsa, birinjisinden dublikat ýok edilýär.
protected void removeRange(int fromIndex, int toIndex)
Sanawdan başlangyç görkezilen indeks (öz içine alýan) bilen gutarýan görkezilen indeksiň arasynda (ähli zady öz içine almaýar) ähli elementleri aýyrýar. Usuly göni ArrayList obýektine çagyryp bolmaýandygyny bellemelidiris. Ony ulanmak üçin miras almaly AbstractList/ArrayList
. Bu usul başga bir usul bilen hem ulanylýar (soňrak ara alnyp maslahatlaşylar).
public boolean removeIf(Predicate< ? super E> filter)
Berlen predikata esaslanýan ýygyndydan elementleri aýyrýar. Kesgitlemäniň özi belli bir funksiýa / algoritm / şert bolup, onuň esasynda belli bir şerte laýyk bir ýa-da birnäçe element aýrylar. Predicate
- funksional interfeýs (diňe bir usuly öz içine alýar, şonuň üçin lambda hökmünde ulanylyp bilner), "bir parametr aldy - yzyna gaýtaryldy" prinsipinde işleýär. Aslynda, usul interfeýsden ýerine ýetirilişi ýok edýär Collection
we aşakdaky "strategiýany" durmuşa geçirýär: elementleriň üstünden geçýär we biziň bilen gabat gelýänleri belleýär Predicate
; soň birinji gezek gaýtalanan elementleri aýyrmak (we üýtgetmek) ikinji gezek işledilýär. Predicate
Iki obýekt deň bolsa, hakykata gaýdyp gelýän interfeýsi durmuşa geçireliň :
class SamplePredicate< T> implements Predicate< T>{
T varc1;
public boolean test(T varc){
if(varc1.equals(varc)){
return true;
}
return false;
}
}
String
Başga bir synpda, “ArrayList” -i we synpymyzyň ýerine ýetirýän obýektini döredeliň Predicate
:
ArrayList< String> color_list = new ArrayList<> ();
SamplePredicate< String> filter = new SamplePredicate<> ();
Üýtgeýjä varc1
"Ak" bahasyny ýazalyň:
filter.varc1 = "White";
Sanawa birnäçe setir goşalyň:
color_list.add("White");
color_list.add("Black");
color_list.add("Red");
color_list.add("White");
color_list.add("Yellow");
color_list.add("White");
Geliň, sanawdaky usuly ýerine ýetireliň removeIf
, obýektimizi şert bilen geçireris:
color_list.removeIf(filter);
Netijede, "ak" bahasy bolan ähli hatarlar sanawdan aýrylar, sebäbi "çaklaýjy" olary deňlik bilen deňeşdirýär. Jemleýji sanaw: [Gara, Gyzyl, Sary].
public E set(int index, E element)
Görkezilen ýerdäki elementi index
geçen biri bilen çalyşýar element
. Indeks hem noldan uly bolmaly we soňky elementiň görkezijisinden pes bolmaly, ýogsam kadadan çykma bolar IndexOutOfBoundsException
. Içerki massiwiň nusgalary ýok. Plyönekeý görkezilen indeksdäki elementiň ýerine täze element goýulýar, ýagny. bahasynyň üstünden ýazyň.
public void replaceAll(UnaryOperator<e> operator)
Theygyndynyň ähli elementlerini üýtgedýär (şert bilen mümkin). Köplenç lambdalar ýa-da näbelli synplar bilen bilelikde ulanylýar (ýöne aýdyňlygy üçin, mysal üçin interfeýsi amala aşyrýan UnaryOperator
we usullaryny kesgitleýän synpy ulanarys). Interfeýsi durmuşa geçireliň:
class MyOperator< T> implements UnaryOperator< T>{
T varc1;
public T apply(T varc){
return varc1;
}
}
String
Başga bir synpda, “ArrayList” -i we synpymyzyň ýerine ýetirýän obýektini döredeliň UnaryOperator
:
ArrayList< String> color_list = new ArrayList<> ();
MyOperator< String> operator = new MyOperator<> ();
Üýtgeýjä varc1
"Ak" bahasyny ýazalyň:
operator.varc1 = "White";
Sanawa birnäçe setir goşalyň:
color_list.add("White");
color_list.add("Black");
color_list.add("Red");
color_list.add("White");
color_list.add("Yellow");
color_list.add("White");
Geliň, sanawymyzda replaceAll
obýektimizi berjek usuly ýerine ýetireliň operator
:
color_list.replaceAll(operator);
Netijede sanawdaky ähli bahalar “Ak” bilen çalşyryldy: [Ak, Ak, Ak, Ak, Ak, Ak]. Ine, mysal üçin, kolleksiýadaky setirlerden ähli boşluklary aýyryp bilersiňiz:
ArrayList< String> list = new ArrayList<>(Arrays.asList("A ", " B ", "C"));
list.replaceAll(String::trim);
Beýleki usullar: ArrayList sanaw sanawyny usuly ulanyp, yzygiderli massiwde öwrüp bilersiňiz:
public Object[] toArray()
ýa-da
public < T> T[] toArray(T[] a)
- ine, yzyna gaýdyp gelen massiwiň görnüşi runtime
şu usulda kesgitlener:
- käbir amallary çaltlaşdyrmak;
- kolleksiýany gönüden-göni kabul etmek üçin ýüklenmedik usula parametr hökmünde bir massiw geçiriň;
- Kolleksiýalary tanamaýan miras kody bilen täze kolleksiýa esasly kody birleşdirmek.
public Object clone()
Usulyň clone()
Obýektiň görnüşini yzyna berýändigini ýadyňyzdan çykarmaň, şonuň üçin jaň edeniňizden soň zerur klasa oklamaly bolarsyňyz. Klonirlemek täze garaşsyz obýekt döredýär. Kolleksiýany obýektiň bardygyny barlaň:
public boolean contains(Object o)
Sanawda bir obýektiň bardygyny barlamak (Obýekt synpynyň deň usuly bilen içerde ulanylýar, ýagny salgylanmalary deňeşdirýär), netijä baglylykda hakyky / ýalňyş görkezýär. Adaty aýlawlardan başga-da, kolleksiýany ulanyp gaýtalap bilersiňiz (her elemente girip bilersiňiz, şeýle hem käbir çäreleri ýerine ýetirip bilersiňiz):
public void forEach(Consumer< ? super E> action)
Sanawymyzy şeýle görkezip bileris:
List< Integer> numbers = new ArrayList<>(Arrays.asList(10, 20, 50, 100, -5));
numbers.forEach((number)-> System.out.println(number));
Lambdalary ulanman, anonim synpy ulanmaly we accept
interfeýs usulyny ýok etmeli Consumer
:
numbers.forEach(new Consumer< Integer>() {
@Override
public void accept(Integer integer) {
System.out.println(integer);
}
});
Indeksine görä bir element alyň:
public E get(int index)
Kolleksiýa elementlerine tötänleýin girmek üçin ulanylýar. Görkezilen indeksde sanawda ýerleşýän elementi görkezýär. Sanawdaky elementleriň iň köp mukdary bolsa index < 0
ýa-da bolsa , kadadan çykma bolar . Bu elementi sanawdan almagyň esasy usulydyr we belli bir massiw öýjügine girýändigi sebäpli, ArrayList-iň ululygyna garamazdan bir elementi indeks boýunça almagyň wagty hemişe birmeňzeş bolar. Görkezilen obýektler üçin indeksleri tapmak: index >=
IndexOutOfBoundsException
public int indexOf(Object o);
public int lastIndexOf(Object o);
Usullar sanawdaky birinji (berlen obýekt ilkinji gezek ýüze çykanda) ýa-da soňky gezek (berlen obýekt iň soňky gezek ýüze çykanda) görkezijini görkezýär. Sanawda element ýok bolsa, usullar -1 gaýdyp geler.
public boolean isEmpty();
Usul sanaw boş bolsa (meýdanyň deňdigini ýa-da ýokdugyny görmek üçin size 0
) dogry bolýar, ýogsam ýalňyş. Sanawda diňe null elementler bar bolsa, usul ýalňyş gaýdyp geler. Başgaça aýdylanda, bu usul bilen null elementler hem göz öňünde tutulýar. Sanawdaky elementleriň sanyny biliň:
public int size();
Sanawdaky elementleriň sanyny (ölçeg meýdan bahalary) görkezýär. Elementleriň sany sanawyň kuwwatyndan (kuwwatyndan) tapawutlanyp biler. Sanaw üçin iterator alyň:
public Iterator< E> iterator();
Soňra aýlawda ýa-da başga bir gaýtadan işlemekde sanaw üçin iterator görkezýär. Iterator şowsuz hereketleri amala aşyrýar. Collectionygyndynyň içinden geçip, oňa käbir üýtgeşmeleri duýsa (iterator usullary bilen alynmady), derrew kadadan çykma çykarýar ConcurrentModificationException
. Iteratoryň bir zady bar modification count
. Haçan-da iterator kolleksiýanyň üsti bilen gaýtalansa next/hasNext/remove
, bu hasaplaýjyny barlaýar. Eger iteratoryň görmegine garaşýan bolsa, bu kadadan çykma döredýär. Bu ýerde iteratorlary jikme-jik göz öňünde tutmaýaryn.
public ListIterator< E> listIterator() и public ListIterator< E> listIterator(int index)
Soňra aýlawda ýa-da başga bir gaýtadan işlemekde sanaw üçin sanaw iteratoryny görkezýär. Interfeýs sanawyň iki taraplaýyn geçmegi we elementleriniň üýtgemegi üçin ListIterator
interfeýsi giňeldýär . Iterator
Artykmaç wersiýada “gezelenç” başlajak indeksden geçip bilersiňiz. Bu ýagdaýda indeks, usulyň işe başlajak ilkinji elementini aňladýar next()
we usul diýlende, previous()
geçiş “geçen indeks - 1” indeksiniň aşagyndaky elementden başlar.
public Spliterator <E> spliterator()
Java 8, çäklendiriji iterator diýlip atlandyrylýan giç baglaýjy we şowsuz çalt iteratoryň täze görnüşini hödürleýär. Aýryjy iteratorlar elementleriň yzygiderliligini gaýtalamaga mümkinçilik berýär, ýöne olar başgaça ulanylýar. “Spliterator” interfeýsiniň iň möhüm aýratynlygy, elementleriň yzygiderliliginiň aýry bölekleriniň paralel gaýtalanmagyny we şonuň üçin paralel programmirlemegi goldamak ukybydyr.
GO TO FULL VERSION