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

Vektor Jawa

Diterbitake ing grup
Mbokmenawa sampeyan wis nemokake array ing Jawa, lan sampeyan ngerti manawa salah sawijining kekurangan utama yaiku konsistensi ukuran. Sawise sampeyan wis nggawe larik saka ukuran tartamtu, sampeyan ora bisa ngganti mengko. Ana sawetara kelas kerangka Koleksi Jawa ing basa Jawa sing ngrampungake masalah iki. Salah sijine yaiku Java Vector Class. Bakal dirembug ing artikel iki.

Apa Kelas Vektor

Nalika kita nulis ing pambuka, kelas Vektor saka Java Collection Framework ngilangake masalah ukuran statis array. Java Vector minangka jinis array dinamis lan bisa tuwuh utawa nyuda ukurane. Nggunakake kelas koleksi Vector , kita bisa nyimpen klompok unsur minangka obyek prasaja lan ngapusi wong liwat macem-macem cara. Kelas Vektor kasedhiya saka paket java.util . Mangkono, Vektor ing Jawa bisa digunakake yen sampeyan ora ngerti ukuran array sadurunge, utawa yen sampeyan butuh "array" sing bisa ngganti dimensi sajrone umur program. Sampeyan kudu ngandika langsung sing Vectorkelas wis cukup lawas, lan mengko muncul koleksi sing bisa ngganti ing akèh-akèhé saka kasus. "Analog" Java Vector sing populer yaiku kelas ArrayList . Bentenane sing paling penting ing antarane kelas kasebut yaiku Vektor disinkronake, dene ArrayList ora. Kita bakal ngomong babagan beda liyane ing antarane rong kelas kasebut lan analog sing luwih modern saka kelas Vektor mengko ing bagean "Apa sing salah karo kelas Vektor".

Metode Vektor Jawa

Mangkene Metode Vektor Java :
  • void add(int index, Object element) nglebokake unsur sing ditemtokake ing posisi vektor sing ditemtokake.

  • boolean add (Obyek o) nambah unsur kasebut menyang mburi vektor.

  • boolean addAll (Koleksi c) nambahake kabeh unsur ing koleksi kasebut menyang mburi vektor, supaya bisa bali dening iterator koleksi sing ditemtokake.

  • boolean addAll(int index, Koleksi c) nglebokake kabeh unsur ing Koleksi kasebut menyang vektor ing posisi sing ditemtokake.

  • void addElement(Object obj) nambahake komponen sing ditemtokake ing pungkasan vektor iki, nambah ukuran siji.

  • kapasitas int () ngasilake kapasitas saiki vektor iki.

  • void clear () mbusak kabeh unsur saka vektor iki.

  • Klone obyek () ngasilake kloning vektor iki.

  • boolean ngemot (Obyek elem) nguji manawa obyek kasebut minangka komponen ing vektor iki.

  • boolean containsAll (Koleksi c) ngasilake bener yen vektor ngemot kabeh unsur Koleksi kasebut.

  • void copyInto(Object [] anArray) nyalin komponen vektor iki menyang array sing ditemtokake.

  • Object elementAt(int index) ngasilake komponèn ing indeks kasebut.

  • Elemen enumerasi () ngasilake enumerasi komponen vektor iki.

  • void ensureCapacity(int minCapacity) nambah kapasitas vektor iki, yen perlu, kanggo mesthekake yen bisa nahan paling sethithik jumlah komponen sing diwenehake dening argumen kapasitas minimal.

  • boolean padha karo (Obyek o) mbandhingake obyek kasebut menyang vektor iki.

  • Obyek firstElement () ngasilake komponen pisanan (unsur ing indeks 0) saka vektor iki.

  • Obyek njaluk (int index) ngasilake unsur ing posisi kasebut ing vektor iki.

  • int hashCode () ngasilake nilai kode hash kanggo vektor iki.

  • int indexOf(Object elem) nggoleki kedadeyan pisanan saka argumen sing diwenehake, nguji kesetaraan nggunakake metode sing padha.

  • int indexOf(Object elem, int index) nggoleki kedadeyan pisanan saka argumen sing diwenehake, diwiwiti saka indeks, lan nguji kesetaraan nggunakake metode sing padha.

  • void insertElementAt (Object obj, int index) nglebokake obyek kasebut minangka komponen menyang vektor iki ing indeks kasebut.

  • boolean isEmpty() nguji vektor iki kanggo komponen sing ilang.

  • Obyek lastElement () ngasilake komponen pungkasan saka vektor.

  • int lastIndexOf (Obyek elem) ngasilake indeks kedadeyan pungkasan saka obyek kasebut ing vektor iki.

  • int lastIndexOf(Obyek elem, int indeks) nggoleki mundur kanggo obyek sing ditemtokake, diwiwiti saka indeks kasebut, lan ngasilake indeks kasebut.

  • Obyek mbusak (int index) mbusak unsur ing posisi kasebut ing vektor iki.

  • boolean mbusak (Obyek o) mbusak kedadeyan pisanan saka unsur kasebut ing vektor iki. Yen vektor ora ngemot unsur, iku ora ngganti.

  • boolean removeAll(Koleksi c) mbusak kabeh unsur saka vektor sing ana ing Koleksi kasebut.

  • void removeAllElements () mbusak kabeh komponen saka vektor lan nyetel ukuran kanggo nul.

  • boolean removeElement (Object obj) mbusak kedadeyan pisanan (indeks paling murah) saka argumen saka vektor iki.

  • void removeElementAt (int index) mbusak unsur ing indeks.

  • void removeRange(int fromIndex, int toIndex) mbusak saka Daftar iki kabeh unsur sing indeks ana ing antarane fromIndex, inklusif, lan toIndex, sacara eksklusif.

  • boolean retainAll(Koleksi c) mung nahan unsur ing vektor sing ana ing Koleksi kasebut.

  • Set obyek (indeks int, unsur Obyek) ngganti unsur ing posisi sing ditemtokake ing vektor iki karo unsur sing ditemtokake.

  • void setElementAt (Obyek obj, indeks int) nyetel komponen ing indeks tartamtu saka vektor iki minangka obyek diwenehi.

  • void setSize(int newSize) nyetel ukuran vektor iki.

  • int size () ngasilake jumlah komponen ing vektor iki.

  • Dhaptar subList (int fromIndex, int toIndex) ngasilake perwakilan (tampilan) saka bagean Dhaptar iki antarane fromIndex, inklusif, lan toIndex, sacara eksklusif.

  • Obyek [] toArray () ngasilake array sing ngemot kabeh unsur vektor iki ing urutan sing bener.

  • Obyek [] toArray (Obyek [] a) ngasilake array sing ngemot kabeh unsur vektor iki kanthi urutan sing bener; jinis eksekusi array bali yaiku jinis array sing ditemtokake.

  • String toString () ngasilake perwakilan senar saka vektor iki ngemot perwakilan senar saben unsur.

  • void trimToSize () trims kapasitas vektor iki kanggo ukuran saiki vektor.

Tuladha Vektor Jawa


import java.util.Vector;

public class VectorExample {

   public static void main(String[] args) {
       Vector vector = new Vector();
       System.out.println("the size of the empty vector = " +  vector.size());
       //adding some vector elements
       vector.add("Johnny");
       vector.add("Ivy");
       vector.add("Ricky");
       System.out.println(vector); 
       
       //adding more vector elements       
       vector.add("Johnny");
       vector.add("Paul");
       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("Johnny"));
       //program will print out the first appearance of "Johnny" element starting from the element 1
       System.out.println(vector.indexOf("Johnny", 1));
       vector.clear(); //deleting all vector elements
       System.out.println("the size of the vector after clear method = " +  vector.size());

   }
}
Output saka program iki ing ngisor iki:
ukuran vektor kosong = 0 [Johnny, Ivy, Ricky] [Johnny, Ivy, Ricky, Johnny, Paul] ukuran vektor = 5 unsur pisanan vektor = Johnny 0 3 ukuran vektor sawise cetha metode = 0

Apa sing salah karo Kelas Vektor?

Miturut dokumentasi kelas Java Vector , yen sampeyan ora mbutuhake implementasine aman thread ing program sampeyan, disaranake nggunakake ArrayList ing panggonan Vector (Kerangka Koleksi peserta luwih efektif). Ayo dadi ngganti conto ing ndhuwur sethitik, nggunakake kelas ArrayList tinimbang Vector .

import java.util.ArrayList;
import java.util.List;

public class ArrayListExample {

       public static void main(String[] args) {
           List vector = new ArrayList();
           //Vector vector = new Vector();
           System.out.println("the size of the empty vector = " +  vector.size());
           vector.add("Johnny");
           vector.add("Ivy");
           vector.add("Ricky");
           System.out.println(vector);
           vector.add("Johnny");
           vector.add("Paul");
           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("Johnny"));
           //program will print out the first appearance of "Johnny" element starting from the element 1
           //System.out.println(vector.indexOf("Johnny", 1));
           vector.clear();
           System.out.println("the size of the vector after clear method = " +  vector.size());

       }
   }
We komentar metu baris karo vector.indexOf ("Johnny", 1) , amarga ora ana cara ing variasi iki ing kelas ArrayList . Kanggo alesan sing padha, vector.firstElement () baris komentar metu. Ing kabeh babagan liyane, program kasebut ngasilake asil sing padha karo sing pisanan. Mesthi, ing conto kasebut, ora jelas kenapa ArrayList luwih apik tinimbang Vector . Iki mbutuhake kawruh luwih akeh babagan, ucapake, benang. Kita dhaptar alasan ing kene. Kaping pisanan, sanajan kelas Vektor disinkronake, nanging ora bisa diarani aman, sanajan iki katon aneh. Kasunyatane yaiku Vektor nyinkronake saben operasi, dudu kabeh Vektorcontone dhewe. Iki bisa dadi masalah ing program sing sampeyan kudu nyinkronake kabeh operasi tinimbang operasi individu. Ngomong, yen siji thread wis iterasi liwat vektor lan thread liyane struktural ngowahi conto vektor, iterator bakal uncalan ConcurrentModificationException . Pranyata metu sing loro Utas bisa digunakake karo conto Vector ing wektu sing padha yen padha nindakake operasi beda. Kapindho, Vektorkelas ora nduweni kinerja sing paling apik amarga obyek duwe susunan lan sinkronisasi sing bisa diowahi ukurane. Kombinasi iki tegese overhead tambahan kanggo operasi pamblokiran, apa sinkronisasi dibutuhake utawa ora. Mesthi, iki mengaruhi kinerja. Kajaba iku, nyinkronake vektor ing saben operasi uga duwe efek negatif ing kinerja, amarga kita bakal entuk kunci maneh lan maneh kanggo saben operasi. Yen kabeh conto kelas disinkronake, kunci kasebut uga bakal dipikolehi sapisan, sing luwih efisien. Katelu, Vector ndhukung sawetara cara warisan. Tuladhane unsur(). Cara iki ngasilake enumerasi komponen vektor. Programer paling kerep nggunakake Iterator utawa ListIterator kanggo Enumerasi, lan kanggo sawetara alasan. Ing tartamtu, Enumeration ora mbusak () cara ditetepake, kang tegese dhaftar ora bisa diowahi struktural sak pengulangan. Uga, ora kaya ListIterator, Enumerasi ora nawakake akses bidirectional. Nalika sampeyan bisa ndeleng, Vector wis cukup sawetara masalah. Apa yen sampeyan isih butuh implementasi antarmuka List sing aman thread? Ing kasus iki, ArrayList ora bakal mbantu, nanging sampeyan bisa nggunakake, contone, kelas CopyOnWriteArrayList tinimbang Vector ; dipanggonke minangka varian aman saka ArrayList. Sampeyan uga bisa nyinkronake ArrayList nggunakake metode Collections synchronizedList () .

Vektor pancen ana masalahe... kok isih ana ing Jawa kok kudu diwulangake?

Pitakonan muncul: kenapa kita sinau ing kelas Vektor ? Lan kok durung diilangi saka Jawa? Kasunyatane Jawa iku nduweni prinsip kompatibilitas mundur. Iki tegese kabeh kode lawas sing ditulis pirang-pirang taun kepungkur bakal dimangerteni dening versi Jawa modern. Kajaba iku, ana sawetara aplikasi tingkat perusahaan ing lingkungan Jawa sing wis didhukung pirang-pirang dekade. Sampeyan bisa uga kudu ngatasi "dinosaurus" kasebut ing karya sampeyan, dadi sampeyan kudu siyap kanggo kejutan, kayata kode karo kelas warisan sing ora efektif.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION