List Java là một collection có thứ tự. List Java là một interface mở rộng interface collection. List Java cung cấp quyền kiểm soát vị trí mà bạn có thể chèn một phần tử. Bạn có thể truy cập các phần tử theo chỉ mục của chúng và cũng có thể tìm kiếm các phần tử trong List.
Các bài viết liến quan:
Một số điểm quan trọng về List Java là:
- interface List Java là một thành viên của Khung collection Java.
- List cho phép bạn thêm các phần tử trùng lặp.
- List cho phép bạn có các phần tử ‘null’.
- interface List có nhiều phương thức mặc định trong Java 8, chẳng hạn như replaceAll, sort và spliterator.
- Liệt kê các chỉ mục bắt đầu từ 0, giống như mảng.
- List hỗ trợ Generics và chúng ta nên sử dụng nó bất cứ khi nào có thể. Sử dụng Generics với List sẽ tránh được ClassCastException khi chạy.
Sơ đồ lớp List Java
interface List Java mở rộng interface collection. interface collection bên ngoài interface Iterable. Một số lớp triển khai List được sử dụng nhiều nhất là ArrayList, LinkedList, Vector, Stack, CopyOnWriteArrayList. AbstractList cung cấp triển khai khung của interface List để giảm nỗ lực triển khai List List.java, ví dụ List java, hướng dẫn List java, interface List java, sơ đồ lớp List java
Một số phương thức List Java hữu ích là;
- int size(): để lấy số lượng phần tử trong List.
- boolean isEmpty(): để kiểm tra xem List có rỗng hay không.
- boolean contains(Object o): Trả về true nếu List này chứa phần tử đã chỉ định.
- Iterator<E> iterator(): Trả về một iterator trên các phần tử trong List này theo trình tự thích hợp.
- Object[] toArray(): Trả về một mảng chứa tất cả các phần tử trong List này theo đúng thứ tự
- boolean add(E e): Nối phần tử đã chỉ định vào cuối List này.
- boolean remove(Object o): Loại bỏ sự xuất hiện đầu tiên của phần tử được chỉ định khỏi List này.
- boolean holdAll(Collection<?> c): Chỉ giữ lại các phần tử trong List này được chứa trong collection đã chỉ định.
- void clear(): Xóa tất cả các phần tử khỏi List.
- E get(int index): Trả về phần tử tại vị trí xác định trong List.
- E set(int index, E element): Thay thế phần tử ở vị trí đã chỉ định trong List bằng phần tử đã chỉ định.
- ListIterator<E> listIterator(): Trả về một trình lặp List trên các phần tử trong List.
- List<E> subList(int fromIndex, int toIndex): Trả về dạng xem của phần của List này giữa fromIndex, bao gồm và toIndex, được chỉ định. List trả về được hỗ trợ bởi List này, vì vậy những thay đổi phi cấu trúc trong List trả về được phản ánh trong List này và ngược lại.
Một số phương thức mặc định được thêm vào List trong Java 8 là;
- default void replaceAll(UnaryOperator<E> operator): Thay thế từng phần tử của List này bằng kết quả của việc áp dụng toán tử cho phần tử đó.
- default void sort(Comparator<super E> c): Sắp xếp List này theo thứ tự do Bộ so sánh đã chỉ định tạo ra.
- default Spliterator<E> spliterator(): Tạo một Spliterator trên các phần tử trong List này.
Java array vào List
Chúng ta có thể sử dụng lớp Arrays để xem mảng dưới dạng List. Tuy nhiên, chúng tôi sẽ không thể thực hiện bất kỳ sửa đổi cấu trúc nào đối với List, nó sẽ ném java.lang.UnsupportedOperationException. Vì vậy, cách tốt nhất là sử dụng vòng lặp for để tạo List bằng cách lặp qua mảng. Dưới đây là một ví dụ đơn giản cho thấy cách chuyển đổi Java array thành List đúng cách.
package com.dev.examples; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ArrayToList { public static void main(String[] args) { String[] vowels = {"a","e","i","o","u"}; List<String> vowelsList = Arrays.asList(vowels); System.out.println(vowelsList); /** * List is backed by array, we can't do structural modification * Both of the below statements will throw java.lang.UnsupportedOperationException */ //vowelsList.remove("e"); //vowelsList.clear(); //using for loop to copy elements from array to list, safe for modification of list List<String> myList = new ArrayList<>(); for(String s : vowels){ myList.add(s); } System.out.println(myList); myList.clear(); } }
Chọn bất kỳ phương pháp nào ở trên dựa trên yêu cầu dự án của bạn.
List Java thành Array
Một ví dụ đơn giản cho thấy cách chính xác để chuyển đổi List thành mảng.
package com.dev.examples; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ListToArray { public static void main(String[] args) { List<String> letters = new ArrayList<String>(); // add example letters.add("A"); letters.add("B"); letters.add("C"); //convert list to array String[] strArray = new String[letters.size()]; strArray = letters.toArray(strArray); System.out.println(Arrays.toString(strArray)); //will print "[A, B, C]" } }
Sắp xếp List Java
Có hai cách để sắp xếp một List. Chúng ta có thể sử dụng lớp Collections để sắp xếp tự nhiên hoặc chúng ta có thể sử dụng phương thức List sort() và sử dụng Bộ so sánh của riêng mình để sắp xếp. Dưới đây là một ví dụ đơn giản để sắp xếp List java.
package com.dev.examples; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; public class ListSortExample { public static void main(String[] args) { List<Integer> ints = new ArrayList<>(); Random random = new Random(); for (int i = 0; i < 10; i++) ints.add(random.nextInt(1000)); //natural sorting using Collections class Collections.sort(ints); System.out.println("Natural Sorting: "+ints); //My custom sorting, reverse order ints.sort((o1,o2) -> {return (o2-o1);}); System.out.println("Reverse Sorting: "+ints); } }
Một đầu ra mẫu được đưa ra dưới đây. Vì tôi đang sử dụng Ngẫu nhiên để tạo các phần tử List nên mỗi lần nó sẽ khác nhau.
List Java Các toán tử phổ biến
Hầu hết các hoạt động phổ biến được thực hiện trên List java là thêm, xóa, đặt, xóa, kích thước, v.v. Dưới đây là một ví dụ về List java đơn giản cho thấy cách sử dụng phương thức phổ biến.
package com.dev.examples; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ListExample { public static void main(String args[]) { List<String> vowels= new ArrayList<String>(); //add example vowels.add("A"); vowels.add("I"); //let's insert E between A and I vowels.add(1,"E"); System.out.println(vowels); List<String> list = new ArrayList<String>(); list.add("O");list.add("U"); //appending list elements to letters vowels.addAll(list); System.out.println(vowels); //clear example to empty the list list.clear(); //size example System.out.println("letters list size = "+vowels.size()); //set example vowels.set(2, "E"); System.out.println(vowels); //subList example vowels.clear();vowels.add("E"); vowels.add("E");vowels.add("I"); vowels.add("O"); list = vowels.subList(0, 2); System.out.println("letters = "+vowels+", list = "+list); vowels.set(0, "A"); System.out.println("letters = "+vowels+", list = "+list); list.add("U"); System.out.println("letters = "+vowels+", list = "+list); } }
Java List iterator
Dưới đây là một ví dụ đơn giản cho thấy cách lặp qua List trong java.
package com.dev.examples; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ListIteratorExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for(int i=0; i<5; i++) list.add(i); Iterator<Integer> iterator = list.iterator(); //simple iteration while(iterator.hasNext()){ int i = (int) iterator.next(); System.out.print(i + ", "); } System.out.println("\n"+list); //modification of list using iterator iterator = list.iterator(); while(iterator.hasNext()){ int x = (int) iterator.next(); if(x%2 ==0) iterator.remove(); } System.out.println(list); //changing list structure while iterating iterator = list.iterator(); while(iterator.hasNext()){ int x = (int) iterator.next(); //ConcurrentModificationException here if(x==1) list.add(10); } } }
0, 1, 2, 3, 4, [0, 1, 2, 3, 4] [1, 3] Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) at java.util.ArrayList$Itr.next(ArrayList.java:851) at com.dev.examples.ListIteratorExample.main(ListIteratorExample.java:34)
Đó là tất cả tổng hợp nhanh về List trong Java. Tôi hy vọng những ví dụ về List Java này sẽ giúp bạn bắt đầu lập trình collection List.