JavaRush /Blog Jawa /Random-JV /ArrayList ing Jawa

ArrayList ing Jawa

Diterbitake ing grup
Nalika ngembangake, asring angel kanggo prédhiksi ukuran array sing dibutuhake. Mulane, fungsi kanggo mbosenke alokasi memori nalika program lagi mlaku perlu kanggo saben basa program. Array dinamis yaiku ukuran sing bisa diganti sajrone eksekusi program. Ing Jawa, ana kelas ArrayList kanggo tujuan iki .

Apa kelas ArrayList?

ArrayList punika implementasine Uploaded mutable antarmuka Dhaftar, bagéan saka Framework Koleksi, kang tanggung jawab kanggo dhaftar (utawa Uploaded dinamis) dumunung ing paket java.utils. Kelas iki ngetrapake kabeh operasi dhaptar opsional lan menehi cara kanggo ngontrol ukuran array sing digunakake kanggo nyimpen dhaptar. ArrayList adhedhasar ide array dinamis. Yaiku, kemampuan kanggo nambah lan mbusak unsur, nalika nambah utawa nyuda yen perlu.

Apa sing disimpen ArrayList?

Mung jinis referensi, obyek apa wae, kalebu kelas pihak katelu. Strings, output stream, koleksi liyane. Kelas Wrapper digunakake kanggo nyimpen jinis data primitif.

ArrayList Konstruktor

  1. ArrayList()

    Konstruktor kosong kanthi kapasitas array internal awal = 10.

    ArrayList<String> list = new ArrayList<>();

    Disaranake kanggo nuduhake jinis nilai sing disimpen ing kurung sudut. Ing conto ing ndhuwur - String.

  2. ArrayList(Koleksi <? ngluwihi E> c)

    Konstruktor nampa koleksi liyane, nggawe array anyar karo unsur koleksi liwati:

    ArrayList<String> list2 = new ArrayList<>(list);

    Urutan unsur ing dhaptar anyar bakal padha karo asline.

  3. ArrayList(int initialCapacity)

    Parameter konstruktor yaiku nilai ukuran awal array internal.

    ArrayList<String> list2 = new ArrayList<>(10000);

    Yen ArrayList ndasari kehabisan spasi nalika unsur anyar ditambahake, array sing luwih gedhe bakal digawe lan data disalin menyang. Yen sampeyan ngerti luwih dhisik nalika nulis kode manawa akeh unsur bakal diproses ing array, sampeyan kudu nemtokake nilai sing luwih gedhe kanggo tujuan optimasi.

Metode ArrayList

    Ing ngisor iki minangka cara utama ArrayList.

  • tambah (e)

    Nambah unsur anyar ing mburi dhaftar. Ngasilake boolean-value ( bener - sukses, salah - ora ditambahake):

    ArrayList<String> list = new ArrayList<>();
    list.add("Hello");
  • add(int index, elemen E)

    Nambahake unsur elementing indeks posisi. Nalika nambah, kabeh unsur ing sisih tengen indeks sing ditemtokake dipindhah 1 posisi ing sisih tengen:

    list.add(0, "Amigo");

    Migunani banget yen sampeyan kudu nglebokake unsur ing ngendi wae ing dhaptar, nanging kanggo operasi selipan sing kerep ing wiwitan lan tengah ArrayList bisa uga ora dadi pilihan sing apik - sampeyan kudu ndeleng LinkedList.

  • addAll(Koleksi <? ngluwihi E> koleksi)

    Nambahake kabeh unsur koleksi menyang dhaptar kanthi urutan sing katon ing koleksi.

  • addAll(int index, Koleksi <? ngluwihi E> koleksi)

    Nambahake kabeh unsur collectionmenyang dhaptar wiwit saka indeks index. Ing kasus iki, kabeh unsur bakal pindhah menyang tengen kanthi jumlah unsur ing dhaptar collection:

    ArrayList<String> secondList = new ArrayList<>();
    secondList.addAll(list);
    System.out.println("First addition: " + secondList);
    secondList.addAll(1, list);
    System.out.println("Second addition in the middle: " + secondList);

    Kesimpulan:

    
    Первое добавление: [Amigo, Hello]
    Второе добавление в середину: [Amigo, Amigo, Hello, Hello]

    Cara kasebut addAll()uga ngasilake asil boolean saka nambah unsur.

  • bening()

    Mbusak kabeh unsur saka dhaptar.

  • kloning()

    Ngasilake obyek salinan saka array:

    ArrayList<String> copyOfSecondList = (ArrayList<String>) secondList.clone();
    secondList.clear();
    System.out.println(copyOfSecondList);

    Kesimpulan:

    
    [Amigo, Amigo, Hello, Hello]

    Wigati dimangerteni manawa metode kasebut clone()bali Object, dadi sawise nelpon sampeyan kudu ngirim menyang kelas sing dibutuhake.

    При клонировании создается новый независимый an object. В примере показано, How очищение клонированного an object не сказалось на составе его клона.

  • contains(Object o)

    Проверка наличие an object в списке, возвращает boolean-meaning.

    System.out.println(copyOfSecondList.contains("Hello"));
    System.out.println(copyOfSecondList.contains("Check"));

    Вывод:

    
    true
    false
  • ensureCapacity(int minCapacity)

    Увеличивает размер внутреннего массива, чтобы в него поместилось количество элементов, переданных в minCapacity. Если массив достаточно вместителен, ниHowие преобразования не производятся.

    Этот метод полезен, когда возникает потребность вместить большое количество элементов в несколько итераций. Например, при создании списка емкость его внутреннего массива — 10. При загрузке данных по сети они обрабатываются асинхронно порциями и результаты помещаются в массив. Если ожидается доставка 10 000 элементов, может быть неэффективно просто добавлять эти данные каждый раз: достаточно будет в начале обработки вызвать метод ensureCapaciry(10000) и записывать туда данные по мере необходимости.

  • forEach(Consumer<? super E> action)

    Обработать в цикле ArrayList можно стандартными способами, цикл for:

    // First way
    for(int i = 0; i< secondList.size(); i++) {
       System.out.println(secondList.get(i));
    }
    И цикл for-each:
    // Second way
    for(String s : secondList) {
       System.out.println(s);
    }

    В классе ArrayList есть метод для обработки каждого element, который называется также, forEach. В качестве аргумента передается реализация интерфейса Consumer, в котором нужно переопределить метод accept():

    secondList.forEach(new Consumer<String>() {
       @Override
       public void accept(String s) {
           System.out.println(s);
       }
    });

    Вывод:

    
    Amigo
    Amigo
    Hello
    Hello

    Метод accept принимает в качестве аргумента очередной элемент того типа, который хранит в себе ArrayList. Пример для Integer:

    ArrayList<Integer> integerList = new ArrayList<>();
    integerList.forEach(new Consumer<Integer>() {
       @Override
       public void accept(Integer integer) {
           System.out.println(integer);
       }
    });

    Метод action() будет выполнен для каждого element.

  • get(int index)

    returns элемент, который расположен в указанной позиции списка.

    Если index < 0 or index >= максимального количества элементов списка, будет выброшено исключение IndexOutOfBoundsException.

    Это основной метод получения element из списка, время извлечения element по индексу всегда будет одинаковым, независимо от размера ArrayList.

  • indexOf(Object o)

    Метод возвращает индекс первого вхождения element в списке. Если element не существует в списке, метод вернет -1.

  • isEmpty()

    Метод возвращает true, если список пустой, false в обратном случае.

    Если в списке содержатся только элементы null, метод вернет false. Иными словами, null элементы также учитываются этим методом.

  • iterator()

    returns итератор для списка для последующего использования в цикле or при любой другой обработке.

    Итератор для ArrayList — fail-fast. Это значит, что если коллекция изменится во время итерации, будет выброшено исключение ConcurrentModificationException. Подробнее об fail-fast и его противоположности fail-safe можно почитать здесь.

  • lastIndexOf(Object o)

    Функционал метода похож на indexOf(), отличие в том, что возвращается индекс последнего element в списке.

    Если элемент не найден, также возвращает -1.

  • remove(int index)

    Удаление element в указанной позиции индекса. После удаления сдвигает все элементы влево для заполнения освободившегося пространства.

    Yen index<0utawa >=nomer dhaptar unsur, pangecualian bakal dibuwang IndexOutOfBoundsException. Akibaté, cara kasebut ngasilake unsur sing wis dibusak.

  • mbusak (obyek o)

    Cara mbusak unsur liwati saka dhaftar o. Yen ana unsur ing dhaptar, bakal dibusak lan kabeh unsur dipindhah menyang kiwa. Yen unsur kasebut ana ing dhaptar lan kasil dibusak, cara kasebut bakal bali bener; yen ora, false .

  • removeAll(Koleksi<?> c)

    Yen sampeyan kudu mbusak sawetara unsur, sampeyan ora kudu nindakake ing daur ulang kondisional: iku luwih trep lan luwih aman kanggo nggunakake cara removeAll(). Iku nampa koleksi unsur sing bakal dibusak saka dhaftar.

    Koleksi kasebut kudu ngemot unsur sing padha karo sing disimpen ing dhaptar target. Yen ora bakal dibuwang ClassCastException. Cara kasebut bakal bali bener yen dhaptar wis diowahi minangka asil saka telpon metode.

  • set(int indeks, elemen E)

    Ngganti unsur ing posisi sing ditemtokake indexkaro sing liwati element. Indeks kasebut uga kudu luwih gedhe tinimbang nol lan kurang saka indeks unsur pungkasan, yen ora, pangecualian bakal dibuwang IndexOutOfBoundsException.

  • ukuran ()

    Cara paling apik (meh mung siji) kanggo ngerteni ukuran array.

  • sort(Komparator<? super E> c)

    Ngurutake dhaptar miturut aturan tartamtu. Aturan Urut minangka antarmuka sing diimplementasikake Comparatorkanthi metode sing diganti compareTo().

    Overriding perlu yen koleksi ngemot obyek saka kelas dhewe. Nalika nggarap kelas standar ( Integer, Stringlan liya-liyane), overriding compareTo()mung dibutuhake kanggo ngurutake non-standar.

  • kanggoArray()

    Ngonversi dhaptar menyang array tetep. Elinga yen cara ngasilake array obyek ( Object[]). Yen sampeyan kudu ngowahi dhaptar dadi macem-macem obyek saka jinis tartamtu, sampeyan bisa ngliwati array sing unsur-unsur dhaptar bakal dipindhah minangka parameter kanggo metode kasebut.

    Tuladha:

    String[] array = new String[secondList.size()];
    secondList.toArray(array);
    for(int i = 0; i< array.length; i++) {
       System.out.println(array[i]);
    }

    Kesimpulan:

    
    Amigo
    Amigo
    Hello
    Hello
Metode ArrayList ing Jawa dipelajari ing kursus JavaRush. Perkenalan pisanan njupuk Panggonan ing tingkat kapitu saka quest Java Syntax, ing kuliah "ArrayList Class" . Ing tingkat sing padha ana koleksi tugas - siji lan loro , ing ngendi sampeyan kudu nggunakake cara ArrayList, conto tambahan nggarap ArrayList lan generik diwenehi, lan prabédan antarane ArrayList lan LinkedList diterangake. Iki minangka topik sinau sing ekstensif, mula, ing salah sawijining wangun utawa liyane, Arraylist ing Jawa (metode kelas iki mung minangka bagean saka kabeh kawruh sing kudu digoleki) bali menyang kursus ing tingkat ngisor iki. saka latihan - Inti, Koleksi, Multithreading. Kita percaya yen praktik saben dina nulis kode minangka kunci utama kanggo sukses ing pemrograman. Mula, 80% JavaRush kalebu tugas praktis, proyek mini, lan tugas game. Kabeh iki atusan jam coding sing bakal mbantu nambah katrampilan sampeyan.

Link kanggo maca luwih

  1. Artikel rinci babagan array dinamis , utawa luwih tepat babagan ArrayListlan LinkedList, sing nindakake peran ing basa Jawa.
  2. Artikel babagan mbusak unsur saka ArrayList .
  3. Kuliah babagan nggarap ArrayList ing diagram lan gambar .
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION