CodeGym /Blog Jawa /Acak /Daftar Jawa
John Squirrels
tingkat
San Francisco

Daftar Jawa

Diterbitake ing grup
Java Collection Framework ngemot antarmuka lan kelas sing migunani banget kanggo nggarap struktur data. Bisa diarani iki minangka salah sawijining kerangka JDK sing paling penting. Antarmuka List banget populer. amarga tanpa kabeh limo dhaptar ing program iku indispensable. Ing artikel iki, kita bakal nutupi antarmuka iki, cara lan implementasine Dhaptar Jawa.

Antarmuka Dhaftar Jawa

Sing paling penting babagan dhaptar yaiku koleksi sing wis diurutake . Sampeyan uga bisa nyebataken urutan. Ing Jawa, dhaptar iku homogen, yaiku, unsur-unsur dhaptar kasebut saka jinis data sing padha. Antarmuka Java List warisan saka Koleksi, iku warisan kabeh operasi. Kajaba iku, operasi ing ngisor iki uga bisa ditindakake ing Daftar:
  • Akses posisi. Saben unsur nduweni indeks lan bisa dimanipulasi adhedhasar posisine. ing dhaftar. Yaiku, sampeyan bisa nambah, ngilangi lan ngowahi unsur.
  • Nggoleki. Sampeyan bisa nemokake unsur ing dhaptar kanthi isi lan ngasilake indeks kasebut.
  • Mbaleni. Sifat sekuensial saka List ngidini nggunakake metode iterasi (listIterator).
  • Range-view. Cara sublist nindakake operasi kisaran sewenang-wenang ing dhaptar.

Metode Dhaftar Jawa

Operasi ing ndhuwur kapapar ing cara antarmuka Java List. Ing ngisor iki sawetara:
Metode Katrangan
tambah (elemen E) Cara iki nambah unsur unsur ing mburi dhaftar iki.
nambah (int indeks, unsur) Cara kasebut nambahake unsur ing indeks tartamtu ing dhaptar. Yen parameter needed liwati, iku nambah unsur ing mburi dhaftar.
addAll(int index, Koleksi koleksi) Nambah kabeh unsur ing koleksi diwenehi menyang dhaftar. Yen parameter siji liwati, nambah kabeh unsur koleksi diwenehi ing mburi dhaftar.
ukuran () Ngasilake ukuran dhaptar (jumlah unsur ing dhaptar).
entuk (int index) Ngasilake unsur ing indeks kasebut.
set(int indeks, elemen) Ngganti unsur ing indeks tartamtu karo unsur anyar lan bali unsur sing diganti dening unsur anyar.
mbusak (int index) Mbusak unsur saka indeks sing ditemtokake.
mbusak (unsur) Mbusak kedadeyan pisanan saka unsur diwenehi ing dhaftar.
bening() Mbusak kabeh unsur saka dhaptar.
indexOf(elemen) Ngasilake kedadeyan pisanan saka unsur diwenehi. Yen unsur ora ana ing dhaftar, bali -1 .
lastIndexOf(elemen) Ngasilake kedadeyan pungkasan saka unsur sing diwenehake. Yen unsur ora ana ing dhaftar, bali -1 .
padha (unsur) Bandingake podo saka unsur diwenehi karo unsur dhaftar.
kode hash() Mulihake nilai hashcode saka dhaptar sing diwenehake.
kosong() Priksa manawa dhaptar kosong. Ngasilake bener yen dhaptar kosong.
ngandhut (unsur) Priksa manawa dhaptar kasebut ngemot unsur . Ngasilake bener yen dhaptar ngemot unsur.
ngemot Kabeh (Koleksi koleksi) Priksa manawa dhaptar kasebut ngemot kabeh koleksi unsur.
sort (komparator comp) Ngurutake unsur dhaptar kanthi basis komparator sing diwenehake.
subList(int fromIndex, int toIndex) Ngasilake tampilan bagean dhaptar iki ing antarane sing ditemtokake sakaIndex, inklusif, lan toIndex, eksklusif.

Implementasi dhaptar

Amarga List minangka antarmuka, program kudu nggawe implementasine konkrit. Sampeyan bisa milih antarane implementasi Daftar ing ngisor iki ing Java Collections API:
  • java.util.ArrayList
  • java.util.LinkedList
  • java.util.Vector
  • java.util.Stack
Implementasi paling populer saka antarmuka List disebut ArrayList. Akeh kurang asring, nanging sampeyan isih bisa ndeleng nggunakake LinkedList ing tugas nyata, nanging Vector lan Stack wis dadi morally lungse kanggo dangu, supaya sampeyan bakal paling kamungkinan nemokake iku mung ing proyèk karo kode warisan kuna.

Dhaftar Pranyatan Antarmuka

Sampeyan bisa ngumumake dhaptar ing program Java kanthi salah sawijining cara ing ngisor iki:

List<String> myList = new ArrayList();
List myList1 = new ArrayList();
List myList3 = new ArrayList<String>();
ArrayList arrayList = new ArrayList();
Paling apik kanggo ngumumake dhaptar anyar liwat antarmuka. Kajaba iku, sampeyan bisa ngumumake implementasine List liyane. Cara paling cendhak:

Vector myVector = new Vector;
LinkedList linkedList = new LinkedList();
Stack stack = new Stack();
Kanthi pranyatan kasebut, jinis data saka unsur dhaptar kasebut ditemtokake nalika wiwitan dhaptar, yaiku, nalika unsur ditambahake ing kana.

List myList = new ArrayList<String>();
Vector myVector = new Vector();
LinkedList linkedList = new LinkedList();
Stack stack = new Stack();
stack.add("Paul");
linkedList.add(1);
myVector.add(1.2f);
myList.add('a');
Saiki mung string sing bisa ditambahake menyang tumpukan kita, integer menyang linkedList , ngambang menyang myVector , lan myList minangka dhaptar karakter.

Cara kerjane ArrayList

Yen sampeyan wis kenal karo array biasa, sampeyan uga wis ngerti karo ArrayList. Nyatane, ArrayList minangka array dinamis, lan ing njero ana array biasa. Array iki tumindak minangka nyimpen data. ArrayList mung nyimpen jinis referensi, obyek apa wae, kalebu kelas pihak katelu, strings, stream output, lan koleksi liyane. Kelas Wrapper digunakake kanggo nyimpen jinis data primitif ing ArrayList. Nalika nggawe dhaptar, kita bisa langsung nyetel ukurane, nanging umume ora. Kanthi gawan, ArrayList ukuran = 10. Apa nambah unsur anyar menyang ArrayList katon kaya? Kaping pisanan, mriksa diwiwiti kanggo ndeleng yen ana cukup spasi ing array internal lan apa siji unsur liyane bakal pas. Yen ana spasi, unsur anyar ditambahake ing pungkasan dhaptar, yaiku, menyang sel sing nderek unsur pungkasan. Indeks sawijining bakal arraylist.size (). Yen kita mung nggawe dhaptar lan kosong, iki tegese arrayList.size () = 0. Mulane, unsur anyar bakal ditambahake ing sel kanthi indeks 0. Yen ora ana papan sing cukup, sing anyar array digawe nang ArrayList kanthi ukuran (ukuran OldArray * 1.5) + 1. Kanthi prinsip sing padha, sisipan dumadi ing tengah dhaptar, nanging ing wektu sing padha, kabeh unsur sing ngetutake unsur sing dilebokake yaiku dipindhah menyang tengen. Dadi, yen kita duwe 5 unsur ing array, lan kita kudu nglebokake unsur menyang nomer sel 2 (yaiku, sing katelu), banjur 0 lan 1 unsur array tetep ing panggonan, unsur anyar katon ing sel 2, lan sawijining leluhur menyang sel katelu lan ing. unsur anyar bakal ditambahake menyang sel karo indeks 0. Yen dadi metu sing ana ora cukup papan, Uploaded anyar digawe nang ArrayList karo ukuran (ukuran OldArray * 1,5) + 1. Miturut padha Prinsip, sisipan ana ing tengah dhaptar, nanging ing wektu sing padha, kabeh unsur sing ngetutake unsur sing dilebokake dipindhah menyang sisih tengen. Dadi, yen kita duwe 5 unsur ing array, lan kita kudu nglebokake unsur menyang nomer sel 2 (yaiku, sing katelu), banjur 0 lan 1 unsur array tetep ing panggonan, unsur anyar katon ing sel 2, lan sawijining leluhur menyang sel katelu lan ing. unsur anyar bakal ditambahake menyang sel karo indeks 0. Yen dadi metu sing ana ora cukup papan, Uploaded anyar digawe nang ArrayList karo ukuran (ukuran OldArray * 1,5) + 1. Miturut padha Prinsip, sisipan ana ing tengah dhaptar, nanging ing wektu sing padha, kabeh unsur sing ngetutake unsur sing dilebokake dipindhah menyang sisih tengen. Dadi, yen kita duwe 5 unsur ing array, lan kita kudu nglebokake unsur menyang nomer sel 2 (yaiku, sing katelu), banjur 0 lan 1 unsur array tetep ing panggonan, unsur anyar katon ing sel 2, lan sawijining leluhur menyang sel katelu lan ing. sisipan ana ing tengah dhaftar, nanging ing wektu sing padha, kabeh unsur sing tindakake unsur sing dilebokake dipindhah menyang tengen. Dadi, yen kita duwe 5 unsur ing array, lan kita kudu nglebokake unsur menyang nomer sel 2 (yaiku, sing katelu), banjur 0 lan 1 unsur array tetep ing panggonan, unsur anyar katon ing sel 2, lan sawijining leluhur menyang sel katelu lan ing. sisipan ana ing tengah dhaftar, nanging ing wektu sing padha, kabeh unsur sing tindakake unsur sing dilebokake dipindhah menyang tengen. Dadi, yen kita duwe 5 unsur ing array, lan kita kudu nglebokake unsur menyang nomer sel 2 (yaiku, sing katelu), banjur 0 lan 1 unsur array tetep ing panggonan, unsur anyar katon ing sel 2, lan sawijining leluhur menyang sel katelu lan ing.

Tuladha Daftar Jawa (Realisasi Daftar Array)


import java.util.*;

public class ArrayListExample2 {
   public static void main(String[] args) {
       List<String> myFriendsList = new ArrayList();
       //we created list of some objects 
       System.out.println( "the size of myList before init = " + myFriendsList.size());
       myFriendsList.add("Alex");
       myFriendsList.add("Tanya");
       myFriendsList.add("Veloxy");
       myFriendsList.add("Alex");
       myFriendsList.add("Andrew");
       System.out.println(myFriendsList);
       System.out.println( "the size of myList after init = " + myFriendsList.size());

       myFriendsList.add("Ihor");
       System.out.println(myFriendsList);
       System.out.println("the size of my list = " +  myFriendsList.size());


       //here the program will print out the first appearance of "Alex" element
       System.out.println(myFriendsList.indexOf("Alex"));
       //program will print out the first appearance of "Alex" element starting from the element 0

       myFriendsList.remove(3);
       System.out.println(myFriendsList.get(3));
       System.out.println("after removing one of Alex's there is only one Alex: " + myFriendsList);
       System.out.println(myFriendsList.get(1));



       myFriendsList.clear();
       System.out.println("the size of the vector after clear method = " +  myFriendsList.size());

   }
}
Mangkene output saka program iki:
ukuran myList sadurunge init = 0 [Alex, Tanya, Veloxy, Alex, Andrew] ukuran myList sawise init = 5 [Alex, Tanya, Veloxy, Alex, Andrew, Ihor] ukuran dhaftar sandi = 6 0 Andrew sawise njabut siji saka Alex mung ana siji Alex: [Alex, Tanya, Veloxy, Andrew, Ihor] Tanya ukuran vektor sawise cara cetha = 0 Proses rampung karo kode metu 0

Cara kerja LinkedList

Ing LinkedList, unsur-unsur kasebut bener-bener nyambung ing rantai sing padha. Saben unsur, saliyane data sing disimpen, nduweni pranala menyang unsur sadurunge lan sabanjure. Tautan kasebut ngidini sampeyan navigasi saka siji unsur menyang unsur liyane. Iterator ndhukung traversal ing loro arah. Nindakake cara kanggo njupuk, mbusak, lan nglebokake ing wiwitan, tengah, lan pungkasan dhaptar. Ngidini sampeyan nambah unsur apa wae kalebu null. LinkedList ngetrapake rong antarmuka - ora mung Dhaptar, nanging uga Deque. Iki menehi kemampuan kanggo nggawe antrian bidirectional saka sembarang unsur, malah null. Saben obyek sing diselehake ing dhaptar sing disambung yaiku simpul (node). Saben simpul ngemot unsur, pranala menyang simpul sadurunge lan sabanjure. Nyatane, dhaptar sing disambung kalebu urutan simpul, sing saben dirancang kanggo nyimpen obyek saka jinis sing ditetepake nalika digawe.

Tuladha Kode


import java.util.*;
public class LinkedListTest {

       public static void main(String args[]){

           List myLinkedList= new LinkedList<Integer>();
           myLinkedList.add(1);
           myLinkedList.add(2);
           myLinkedList.add(4);
           System.out.println("three added elements: " + myLinkedList);
           myLinkedList.add(5);
           myLinkedList.remove(1);
           System.out.println(myLinkedList);
           myLinkedList.size(); //3
           
           //add new element at the specified position:
           myLinkedList.add(2,7);
           System.out.println(myLinkedList);
                }
       }
Output ing kene:
telung unsur tambahan: [1, 2, 4] [1, 4, 5] [1, 4, 7, 5]

Tuladha Kode Vektor

Vektor uga minangka realisasi array dinamis lan meh padha karo ArrayList, nanging disinkronake lan nduweni sawetara cara warisan sing ora ana ing kerangka koleksi. Punika conto prasaja saka panggunaan kelas iki.

import java.util.Vector;

public class VectorExample1 {

   public static void main(String[] args) {
       Vector vector = new Vector();
       System.out.println("the size of the empty vector = " +  vector.size());
       vector.add("Alex");
       vector.add("Tanya");
       vector.add("Andrew");
       System.out.println(vector);
       vector.add("Alex");
       vector.add("Ihor");
       System.out.println(vector);
       System.out.println("the size of the vector = " +  vector.size());
       System.out.println("the first element of the vector = " + vector.firstElement());

       //here the program will print out the first appearance of "Johnny" element
       System.out.println(vector.indexOf("Andrew"));
       //program will print out the first appearance of "Johnny" element starting from the element 1
       System.out.println(vector.indexOf("Alex", 1));
       System.out.println(vector);
       vector.clear();
       System.out.println("the size of the vector after clear method = " +  vector.size());

   }
}
Output yaiku:
ukuran vektor kosong = 0 [Alex, Tanya, Andrew] [Alex, Tanya, Andrew, Alex, Ihor] ukuran vektor = 5 unsur pisanan saka vektor = Alex 2 3 [Alex, Tanya, Andrew, Alex, Ihor] ukuran vektor sawise metode sing jelas = 0 Proses rampung kanthi kode metu 0

Tuladha kode kelas Java Stack


import java.util.Stack;

public class StackTest {
   public static void main(String[] args) {
       Stack stack = new Stack();
       System.out.println(stack.isEmpty());
       stack.add("Paul");
       stack.add("Johnny");
       stack.add("Alex");
       System.out.println(stack.isEmpty());
       stack.push("Andrew");
       System.out.println(stack);
       stack.pop();
       System.out.println(stack);
   }
}
Stack ora mung nambah () lan mbusak () cara nanging uga push lan pop, padha klasik kanggo struktur data kuwi. Tumpukan manut aturan "pisanan mlebu, pungkasan metu" - iki minangka anti-antrian. Mulane, operasi pop njedhul unsur sing pungkasan diselehake ing tumpukan. Punika output conto kita:
bener palsu [Paul, Johnny, Alex, Andrew] [Paul, Johnny, Alex]
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION