Bài 27: Những Interface phổ biến trong Java Collection Framework - Lập trình Java cơ bản

Đăng bởi: Admin | Lượt xem: 3120 | Chuyên mục: Java


1. Collection Interface

Collection Interface trong Java là nền tảng mà trên đó Collection Framework được xây dựng. Nó khai báo các phương thức core mà tất cả Collection sẽ có.
Ví dụ:
import java.util.*;

public class CollectionsDemo {

   public static void main(String[] args) {
      List a1 = new ArrayList();
      a1.add("Zara");
      a1.add("Mahnaz");
      a1.add("Ayan");
      System.out.println(" Cac phan tu ArrayList");
      System.out.print("\t" + a1);

      List l1 = new LinkedList();
      l1.add("Zara");
      l1.add("Mahnaz");
      l1.add("Ayan");
      System.out.println();
      System.out.println(" Cac phan tu LinkedList");
      System.out.print("\t" + l1);

      Set s1 = new HashSet(); 
      s1.add("Zara");
      s1.add("Mahnaz");
      s1.add("Ayan");
      System.out.println();
      System.out.println(" Cac phan tu Set");
      System.out.print("\t" + s1);

      Map m1 = new HashMap(); 
      m1.put("Zara", "8");
      m1.put("Mahnaz", "31");
      m1.put("Ayan", "12");
      m1.put("Daisy", "14");
      System.out.println();
      System.out.println(" Cac phan tu Map");
      System.out.print("\t" + m1);
   }
}
Kết quả thu được:
Cac phan tu ArrayList
        [Zara, Mahnaz, Ayan]
 Cac phan tu LinkedList
        [Zara, Mahnaz, Ayan]
 Cac phan tu Set
        [Zara, Mahnaz, Ayan]
 Cac phan tu Map
        {Mahnaz=31, Ayan=12, Daisy=14, Zara=8}

2. List Interface trong Java

List Interface trong Java kế thừa Collection và khai báo các hành vi của một collection mà lưu giữ một dãy các phần tử. List Interface có một số đặc điểm như sau:
  1. Các phần tử có thể được chèn hoặc được truy cập thông qua vị trí của chúng trong danh sách, bởi sử dụng chỉ mục xây dựng bắt đầu từ 0.
  2. Một list có thể chứa nhiều bản sao phần tử.
  3. Một số phương thức của List Interface sẽ ném một UnsupportedOperationException nếu collection không thể bị sửa đổi, và ném một ClassCastException nếu một đối tượng là không tương thích với đối tượng khác.
Ví dụ:
import java.util.*;

public class CollectionsDemo {

   public static void main(String[] args) {
      List a1 = new ArrayList();
      a1.add("Zara");
      a1.add("Mahnaz");
      a1.add("Ayan");
      System.out.println(" Cac phan tu ArrayList");
      System.out.print("\t" + a1);

      List l1 = new LinkedList();
      l1.add("Zara");
      l1.add("Mahnaz");
      l1.add("Ayan");
      System.out.println();
      System.out.println(" Cac phan tu LinkedList");
      System.out.print("\t" + l1);
   }
}
Kết quả thu được:
Cac phan tu ArrayList
        [Zara, Mahnaz, Ayan]
 Cac phan tu LinkedList
        [Zara, Mahnaz, Ayan]

3. Set Interface trong Java

Set Interface trong Java là một Collection mà không chứa các bản sao phần tử.
Set Interface trong Java chỉ chứa các phương thức được kế thừa từ Collection và thêm sự giới hạn về việc ngăn cấm các phần tử bản sao.
Set Interface cũng thêm các hoạt động hashCode cho phép Set Interface so sánh một cách có ý nghĩa ngay cả khi kiểu triển khai của nó là khác.
Ví dụ:
import java.util.*;

public class SetDemo {

  public static void main(String args[]) { 
     int count[] = {34, 22,10,60,30,22};
     Set set = new HashSet();
     try{
        for(int i = 0; i<5; i++){
           set.add(count[i]);
        }
        System.out.println(set);
  
        TreeSet sortedSet = new TreeSet(set);
        System.out.println("Danh sach da qua sap xep la:");
        System.out.println(sortedSet);

        System.out.println("Phan tu dau tien cua tap hop la: "+
                          (Integer)sortedSet.first());
        System.out.println("Phan tu cuoi cung cua tap hop la: "+
                        (Integer)sortedSet.last());
     }
     catch(Exception e){}
  }
}
Kết quả thu được:
[amrood]$ java SetDemo
[34, 30, 60, 10, 22]
Danh sach da qua sap xep la:
[10, 22, 30, 34, 60]
Phan tu dau tien cua tap hop la: 10
Phan tu cuoi cung cua tap hop la: 60

4. Map Interface trong Java

Map Interface trong Java so khớp duy nhất các key với value. Một key là một đối tượng mà bạn sử dụng để thu nhận một value. Map Interface có chứa các đặc điểm sau:
  1. Với một key và value đã cung cấp, bạn có thể lưu giữ value trong một đối tượng Map. Sau khi giá trị được lưu, bạn có thể thu nhận nó bởi sử dụng key của nó.
  2. Một số phương thức ném một NoSuchElementException khi không có item nào tồn tại trong Map đang gọi.
  3. Một ClassCastException được ném khi một đối tượng là không tương thích với các phần tử trong một Map.
  4. Một NullPointerException được ném nếu cố gắng sử dụng một đối tượng null và null là không được cho phép trong Map.
  5. Một UnsupportedOperationException được ném khi cố gắng thay đổi một Unmodifiable Map trong Java.
Ví dụ:
import java.util.*;

public class CollectionsDemo {

   public static void main(String[] args) {
      Map m1 = new HashMap(); 
      m1.put("Zara", "8");
      m1.put("Mahnaz", "31");
      m1.put("Ayan", "12");
      m1.put("Daisy", "14");
      System.out.println();
      System.out.println(" Cac phan tu cua Map");
      System.out.print("\t" + m1);
   }
}
Kết quả thu được:
Cac phan tu cua Map
        {Mahnaz=31, Ayan=12, Daisy=14, Zara=8}

5. Queue Interface trong Java

Queue (hàng đợi) là một Interface con của Collection, nó có đầy đủ các tính năng của Collection, nó khá giống với List, tuy nhiên mục đích sử dụng hơi khác nhau. Queue hoạt động theo cách thức FIFO (First In First Out). Trong FIFO, bạn chỉ có thể truy cập phần tử ở đầu hàng đợi, và khi loại bỏ phần tử nó loại phần tử đứng đầu hàng đợi. Vị trí phần từ được trèn vào phụ thuộc vào loại hàng đợi và độ ưu tiên của phần tử.
Queue có các đặc điểm cơ bản sau:
  1. Là tập hợp cho phép các phần tử trùng lặp.
  2. Không cho phép phần tử null.
Ví dụ:
import java.util.LinkedList; 
import java.util.Queue; 
  
public class QueueExample 
{ 
  public static void main(String[] args) 
  { 
    Queue q = new LinkedList<>(); 
    for (int i=0; i<5; i++) 
     q.add(i); 
    System.out.println("Elements of queue-"+q); 
    int removedele = q.remove(); 
    System.out.println("removed element-" + removedele); 
    System.out.println(q); 
  
    int head = q.peek(); 
    System.out.println("head of queue-" + head); 
  
    int size = q.size(); 
    System.out.println("Size of queue-" + size); 
  } 
}
Kết quả thu được:
Elements of queue-[0, 1, 2, 3, 4]
removed element-0
[1, 2, 3, 4]
head of queue-1
Size of queue-4
Như vậy, qua bài học này, chúng ta đã cùng tìm hiểu đặc điểm và cách sử dụng có những interface được dùng phổ biến trong Collection Java, ở bài tiếp theo, chúng ta sẽ tìm hiểu cụ thể các class implement những interface này.
Bài tiếp theo: Những Class được triển khai dựa trên Interface của Java Collection >>
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!