CodeGym /Java Blog /Acak /Metode Sublist() di Java: ArrayList dan List
John Squirrels
Level 41
San Francisco

Metode Sublist() di Java: ArrayList dan List

Dipublikasikan di grup Acak

Apakah metode subList() itu?

Kerangka Koleksi adalah komponen yang sangat populer di Java API. Antarmuka daftar dan kelas ArrayList mungkin merupakan alat paling penting dalam Kerangka Koleksi. subList adalah metode dalam antarmuka Daftar yang memungkinkan Anda membuat daftar baru dari sebagian daftar yang sudah ada. Namun, daftar yang baru dibuat ini hanyalah tampilan dengan referensi ke daftar asli. Metode Sublist() di Java: ArrayList dan Daftar - 1Misalnya ambil daftar [1,2,3,4,5,6]. Misalkan Anda ingin membuat daftar baru tanpa elemen pertama dan terakhir. Dalam skenario seperti itu, metode list.subList() akan membantu Anda. metode subList(fromIndex, toIndex) hanya memiliki satu bentuk dan membutuhkan dua argumen, yaitu indeks pertama (fromIndex) dan indeks terakhir(ke Indeks) . Ini akan mengembalikan bagian antara fromIndex dan toIndex sebagai daftar baru. Ada poin penting untuk diingat. Daftar yang baru dibuat akan menyertakan fromIndex dan mengecualikan toIndex. Jadi algoritme untuk skenario di atas akan menjadi seperti ini. List = [1,2,3,4,5,6] newList = List.subList(1,5) Karena subList adalah metode antarmuka List, Anda dapat menggunakannya pada objek ArrayList, LinkedList, Stack, dan Vector. Namun, dalam artikel ini, kami terutama akan fokus pada objek ArrayList dan LinkedList.

Contoh metode subList pada objek ArrayList.

Kami mendeklarasikan ArrayList negara. Kemudian kami mencoba mengembalikan porsi antara elemen ke-2 dan ke-4.

import java.util.*;
 
public class Main {
    public static void main(String[] args) {
         // create an ArrayList 
        ArrayList list = new ArrayList();
         // add values to ArrayList
         list.add("USA");
         list.add("UK");
         list.add("France");
         list.add("Germany");
         list.add("Russia");
        System.out.println("List of the countries:" + list);
         //Return the subList : 1 inclusive and 3 exclusive
        ArrayList new_list = new  ArrayList(list.subList(1, 3));
        System.out.println("The subList of the list: "+new_list);
    }
 }
Output dari kode di atas akan menjadi
Daftar negara:[AS, Inggris, Prancis, Jerman, Rusia] SubDaftar dari daftar: [Inggris, Prancis]
Dalam ArrayList, nilai indeks elemen pertama adalah 0. Oleh karena itu, nilai indeks elemen kedua dan keempat masing-masing adalah 1 dan 3. Jadi, kami memanggil metode sublist() sebagai list.subList(1, 3) . Namun, ingat bahwa metode subList mengembalikan bagian tidak termasuk toIndex yang merupakan elemen keempat ("Jerman") dalam kasus ini. Dengan demikian hanya akan menampilkan "Inggris" dan "Prancis" . Karena output yang dikembalikan adalah List itu sendiri, Anda dapat memanggil metode List apa pun secara langsung. Jadi apa yang akan terjadi jika kita menggunakan indeks yang sama untuk kedua parameter tersebut? Apakah indeks itu akan dimasukkan atau dikecualikan dalam daftar yang dikembalikan? Ayo cari tahu.

//execute subList() method with the same argument for both parameters.
ArrayList new_list2 = new ArrayList(list.subList(3, 3));
System.out.println("The subList of the list: "+new_list2);
Outputnya adalah
SubDaftar dari daftar: [ ]
Outputnya adalah daftar kosong. Meskipun fromIndex memilih elemen ke-4, metode subList() akan menghapusnya karena juga merupakan toIndex.

Contoh metode subList pada objek LinkedList.

Dalam contoh ini, kita akan menggunakan metode sublist pada elemen LinkedList. Sekali lagi, Ini akan mengembalikan daftar antara indeks yang ditentukan fromIndex(inclusive) dan toIndex(exclusive) . Ingatlah bahwa kami mengatakan bahwa daftar yang dikembalikan oleh metode subList() hanyalah tampilan yang memiliki referensi ke daftar aslinya. Jika Anda melakukan perubahan apa pun pada subdaftar, itu juga akan memengaruhi daftar asli. Kami akan mengujinya juga dalam contoh ini.

import java.util.LinkedList;
import java.util.Iterator;
import java.util.List;
 
public class Main {
 
 public static void main(String[] args) {
 
    // Create a LinkedList
    LinkedList linkedlist = new LinkedList();
 
    // Add elements to LinkedList
    for(int i = 0; i<7; i++){
      linkedlist.add("Node "+ (i+1));
    }
 
    // Displaying LinkedList elements
    System.out.println("Elements of the LinkedList:");
    Iterator it= linkedlist.iterator();
    while(it.hasNext()){
       System.out.print(it.next()+ " ");
    }
 
    // invoke subList() method on the linkedList
    List sublist = linkedlist.subList(2,5);
 
    // Displaying SubList elements
    System.out.println("\nElements of the sublist:");
    Iterator subit= sublist.iterator();
    while(subit.hasNext()){
       System.out.print(subit.next()+" ");
    }
 
    /* The changes you made to the sublist will affect the     original LinkedList
     * Let’s take this example - We
     * will remove the element "Node 4" from the sublist.
     * Then we will print the original LinkedList. 
     * Node 4 will not be in the original LinkedList too. 
     */
    sublist.remove("Node 4");
    System.out.println("\nElements of the LinkedList LinkedList After removing Node 4:");
    Iterator it2= linkedlist.iterator();
    while(it2.hasNext()){
       System.out.print(it2.next()+" ");
    }
 }
}
Outputnya akan terlihat seperti ini:
Elemen LinkedList: Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Elemen sublist: Node 3 Node 4 Node 5 Elemen LinkedList LinkedList Setelah menghapus Node 4: Node 1 Node 2 Node 3 Node 5 Node 6 Node 7

Apa yang akan terjadi jika indeks tidak terikat di subList()?

Metode subList mengembalikan dua jenis pengecualian. Mari kita lihat mereka. Pertimbangkan situasi jika indeks yang ditentukan berada di luar jangkauan elemen Daftar (fromIndex < 0 || toIndex > size) . Maka itu akan membuang IndexOutOfBoundExecption .

//using subList() method with fromIndex <0 
ArrayList new_list2 = new ArrayList(list.subList(-1, 3));
System.out.println("Portion of the list: "+new_list2);
 
Exception in thread "main" java.lang.IndexOutOfBoundsException: fromIndex = -1
 
// using subList() method with toIndex > size
ArrayList new_list2 = new ArrayList(list.subList(3, 6));
System.out.println("Portion of the list: "+new_list2);
 
Exception in thread "main" java.lang.IndexOutOfBoundsException: toIndex = 6
Selain itu, jika fromIndex lebih besar dari toIndex (fromIndex > toIndex) , metode subList() melontarkan kesalahan IllegalArgumentException .

//If fromIndex > toIndex
ArrayList new_list2 = new ArrayList(list.subList(5, 3));
System.out.println("Portion of the list: "+new_list2);
 
Exception in thread "main" java.lang.IllegalArgumentException: fromIndex(5) > toIndex(3)

Kesimpulan

Pada artikel ini, kita membahas metode subList dan cara menggunakannya. metode subList() menghilangkan kebutuhan untuk operasi rentang eksplisit (Ini adalah jenis operasi yang biasanya ada untuk array). Hal yang paling penting untuk diingat adalah metode subList tidak mengembalikan instance baru tetapi tampilan dengan referensi ke daftar asli. Oleh karena itu, penggunaan metode subList secara berlebihan pada daftar yang sama dapat menyebabkan utas macet di aplikasi Java Anda.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION