12-Lekciya
.pdfJavada dinamikalıq massivler. ArrayList hám LinkedList
Joba:
1.List;
2.ArrayList;
3.LinkedList;
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Javada maǵlıwmatlardı waqtınsha saqlaw ushın massivlerden paydalanıw múmkin. Biraq olardan paydalanıw hárdayim qolaylı bola bermeydi. Sebebi, massivler fiksirlengen uzınlıqqa (ózgermeytuǵın) iye boladı. Bunnan tısqarı bazı bir algoritmler hám maǵlıwmatlar strukturaların realizaciya qılıwshı interfeyslerden paydalanıwǵa tuwra keledi (Interfeys haqqında Obyektke baǵdarlanǵan programmalastırıw bóliminde tanısasız).
Biz interfeyslerdi realizaciya qılıwshı dizimler (List), ArrayList hám LinkedList penen tanısıp shıǵamız.
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
List interfeysi
Ápiwayı dizimlerdi jaratıw ushın List interfeysinen paydalanıwǵa boladı hám onıń eń kóp paydalanılatuǵın metodlarına tómendegiler kiredi:
•void add(int index, E obj): obyektti dizimge index indeksi arqalı qosadı
•boolean addAll(int index, Collection<? extends E> col): dizimge index indeksi arqalı col kollekciyasınıń barlıq elementlerin qosadı. Eger qosıwda dizim ózgergen bolsa true, keri jaǵdayda false mánisin qaytaradı
•E get(int index): dizimdegi index indeksli obyektti qaytaradı
•int indexOf(Object obj): dizimdegi birinshi ushıraǵan obj obyektiniń indeksin qaytaradı. Eger obyekt tabılmasa -1 mánisin qayataradı
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
List interfeysi
•int lastIndexOf(Object obj): dizimdegi aqırǵı ushıraǵan obj obyektiniń indeksin qaytaradı. Eger obyekt tabılmasa -1 mánisin qayataradı
•E remove(int index): Dizimdegi index indeksli obeyktti óshiredi hám sol óshirgen obyektti qayataradı
•E set(int index, E obj): index indeksli obj obyektine mánis beredi
•void sort(Comparator<? super E> comp): comp komparatorı arqalı dizimdi sortirovka qıladı
•List<E> subList(int start, int end): dizimdegi start hám end indeksleri arasındaǵı elementler jıyındısın aladı
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
ArrayList klası
Javada usı interfeysti realizaciya qılıwshı ArrayList klası bar. ArrayList klası ápiwayı
dizim hám massivtiń analogı bolıp, massivten parqı onıń uzınlıǵı fiksirlenbegen.
ArrayListtiń tómendegishe konstruktorları bar:
•ArrayList(): bos dizimdi jaratadı
•ArrayList(Collection <? extends E> col): col kollekciyasınıń barlıq elementleri
qosılatuǵın dizim jaratadı
•ArrayList (int capacity): Dáslepki sıyımlıǵı capacity bolǵan dizim jaratadı
ArrayList sıyımlıǵı bul massiv ólshemi bolıp, ol obyektlerdi saqlaw ushın xızmet qıladı.
Elementlerdi qosıw waqtında yadtı qayta bólistiriw boladı, yaǵnıy tazadan massiv
jaratıw hám oǵan aldınǵı massiv elementlerin qosadı. Sonlıqtan, ArrayList ke dáslepki
sıyımlıǵın kórsetiw onıń aldın aladı hám ónimdarlıqtıń artıwına alıp keledi.
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Klass ArrayList hám onıń metodlarınan paydalanıwdı tómendegi programma kodı arqalı tanısıp shıǵayıq:
import java.util.ArrayList; public class Program{
public static void main(String[] args) {
ArrayList<String> people = new ArrayList<String>(); // Dizimge birneshe elementlerdi qosiw people.add("Tom");
people.add("Alice");
people.add("Kate");
people.add("Sam");
people.add(1, "Bob"); // elementti 1 indekske kiritemiz System.out.println(people.get(1));// 2-obyektti alamiz people.set(1, "Robert"); // 2-obyekt ushin taza manis
System.out.printf("ArrayListte %d element bar\n", people.size());
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
for(String person : people){
System.out.println(person);
}
// Elementti tekseriw if(people.contains("Tom")){
System.out.println("ArrayListte Tom bar");
}
//Konkret elementti oshiriw people.remove("Robert");
//indeks arqali oshiriw people.remove(0);
Object[] peopleArray = people.toArray(); for(Object person : peopleArray){
System.out.println(person);
}
}
}
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
LinkedList klası
LinkedList klası bir-biri menen baylanısqan túrdegi maǵlıwmatlar sturkturasın ózinde sáwlelendiredi. Ol
List interfeysin realizaciya qıladı. Ol tómendegishe konstruktorlarǵa iye:
•LinkedList(): bos dizim jaratadı
•LinkedList(Collection<? extends E> col): col kollekciyasınıń barlıq elementleri qosılatuǵın dizim
jaratadı
LinkedListte Listtegi hám basqada birneshe metodlar bar:
•addFirst() / offerFirst(): Elementti dizim basına qosadı
•addLast() / offerLast(): Elementti dizim aqırına qosadı
•removeFirst() / pollFirst(): Dizim basındaǵı elementti óshiredi
•removeLast() / pollLast(): Dizim aqırındaǵı elementti óshiredi
•getFirst() / peekFirst(): Birinshi elementti aladı
•getLast() / peekLast(): Aqırgı elementti aladı
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
LinkedListten paydalanıwdı tómendegi programma kodları mısalında kórip shıǵayıq:
import java.util.LinkedList;
public class Program{
public static void main(String[] args) {
LinkedList<String> states = new LinkedList<String>();
// Dizimge birneshe elementlerdi qosiw states.add("Germany"); states.add("France");
states.addLast("Great Britain"); // Aqirgi oringa qosiw states.addFirst("Spain"); // Birinshi oringa qosiw states.add(1, "Italy"); // 1 indeksli elementke qosiw
System.out.printf("Listte %d element bar\n", states.size()); System.out.println(states.get(1));
states.set(1, "Portugal");
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
for(String state : states){ System.out.println(state);
}
// dizimde element bar ekenin tekseriw if(states.contains("Germany")){
System.out.println("Listte Germany bar");
}
states.remove("Germany");
states.removeFirst(); // birinshi elementti oshiriw states.removeLast(); // aqirgi elementti oshiriw
LinkedList<Person> people = new LinkedList<Person>(); people.add(new Person("Mike"));
people.addFirst(new Person("Tom")); people.addLast(new Person("Nick")); people.remove(1); // ekinshi elementti oshiriw
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>