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.
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.
Lebih banyak membaca: |
---|
GO TO FULL VERSION