Rate this post

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à;

  1. int size(): để lấy số lượng phần tử trong List.
  2. boolean isEmpty(): để kiểm tra xem List có rỗng hay không.
  3. boolean contains(Object o): Trả về true nếu List này chứa phần tử đã chỉ định.
  4. 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.
  5. 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ự
  6. boolean add(E e): Nối phần tử đã chỉ định vào cuối List này.
  7. 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.
  8. boolean holdAll(Collection<?> c): Chỉ giữ lại các phần tử trong List này được chứa trong collection đã chỉ định.
  9. void clear(): Xóa tất cả các phần tử khỏi List.
  10. E get(int index): Trả về phần tử tại vị trí xác định trong List.
  11. E set(int index, E element): Thay thế phần tử ở vị trí đã chỉ định trong List bằng phần tử đã chỉ định.
  12. ListIterator<E> listIterator(): Trả về một trình lặp List trên các phần tử trong List.
  13. 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à;

  1. 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ử đó.
  2. 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.
  3. 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.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now