[Java] Java Collection Framework – Phần 2: Collection Interface
Ở phần trước mình đã giới thiệu tới các bạn những thành phần chính trong Java Collection Framework và để tiếp tục cho series bài viết về Java Collection Framework, trong bài viết này mình sẽ giới thiệu tới các bạn một thành quan trọng trong Java Collection Framework đó là Collection Interface. Như trong phần trước mình đã giới thiệu, Collection Interface là gốc, nền móng của cả Java Collection Framework, hầu hết các interface, class khác trong thư viện Collection cũng đều được kế thừa hoặc trực tiếp hoặc gián tiếp từ Collection Interface này. Vì vậy sẽ thật là thiếu sót nếu như không nói về Collection Interface cũng như các phương thức có trong interface này.
Bài viết này sẽ được chia thành 2 phần, trong phần đầu mình sẽ giải thích về các phương thức thường xuyên được sử dụng trong Collection Interface và ở phần 2 mình sẽ đưa ra ví dụ cho các phương thức bằng cách sử dụng ArrayList – một class thuộc Java Collection Framework và cũng là một class quen thuộc với hầu hết những ai đã từng học và làm việc với Java.
1. Các phương thức chính bên trong Collection Interface
# | Phương thức | Ý nghĩa |
1 | add | Thêm 1 phần từ vào trong tập hợp |
2 | addAll | Thêm 1 tập các phần tử từ 1 tập hợp khác vào tập hợp |
3 | remove | Xóa 1 phần từ khỏi tập hợp |
4 | removeAll | Xóa 1 tập các phần tử khỏi tập hợp |
5 | clear | Xóa hết tất cả các phần tử trong tập hợp |
6 | size | Trả về số lượng phần tử có trong tập hợp |
7 | isEmpty | Kiểm tra xem tập hợp có rỗng (không chứa phần tử nào) hay không? -Trả về true nếu tập hợp là rỗng và false trong trường hợp ngược lại. |
8 | contains | Kiểm tra xem 1 object có là 1 phần tử (có được chứa trong) của tập hợp không? -Trả về true nếu object là 1 phần tử của tập hợp và false trong trường hợp ngược lại. |
9 | containsAll | Kiểm tra xem 1 tập hợp có là tập con của tập hợp hiện tại hay không? -Trả về true nếu tập hợp truyền vào là tập con của tập hợp hiện tại và false nếu ngược lại. |
10 | retainAll | Chỉ giữ lại các phần tử mà có xuất hiện trong 1 tập khác (giao của 2 tập hợp) |
11 | iterator | Trả về 1 iterator của tập hợp hiện tại. |
2. Ví dụ
Như đã nói từ trước ở phần này mình sẽ sử dụng ArrayList để làm ví dụ minh họa cho các phương thức có trong Collection Interface.
Để thống nhất ta sẽ giả sử ta có 1 ArrayList là list có chứa 10 phần tử dạng String từ “1” đến “10”. Cụ thể list sẽ bao gồm các phần tử sau:
list: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
2.1. add()
Đặc tả: boolean add(E o);
Ví dụ: Ta sẽ sử dụng phương thức add() để thêm 1 phần tử có giá trị “11” vào trong list như sau:
list.add("11");
và kết quả là:
list: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
2.2. addAll()
Đặc tả: boolean
addAll(Collection<?
extends
E> c);
Ví dụ: Ta sẽ khai báo 1 ArrayList của String khác là list2 với 2 phần tử “11” và “12”
1 2 3 |
ArrayList<String> list2 = new ArrayList<>(); list2.add("11"); list2.add("12"); |
sau đó ta sử dụng phương thức addAll() để thêm tất cả các phần tử của list2 vào list như sau:
list.addAll(list2);
Kết quả thu được như sau:
list: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
2.3. remove()
Đặc tả: boolean
remove(Object o);
Ví dụ: Ta sẽ xóa phần tử có giá trị “10” khởi list như sau:
list.remove("10");
Kết quả như sau:
list: 1, 2, 3, 4, 5, 6, 7, 8, 9
2.4. removeAll()
Đặc tả: boolean
removeAll(Collection<?> c);
Ví dụ: Ta sẽ khai báo 1 ArrayList của String khác là list3 với 2 phần tử “9” và “10”
1 2 3 |
ArrayList<String> list3 = new ArrayList<>(); list3.add("9"); list3.add("10"); |
sau đó ta sử dụng phương thức removeAll() để xóa tất cả các phần tử của list có ở trong list2 như sau:
list.removeAll(list3);
Kết quả thu được như sau:
list: 1, 2, 3, 4, 5, 6, 7, 8
2.5. clear()
Đặc tả: void clear()
Ví dụ: Ta sẽ xóa hết tất cả các phần tử trong list bằng cách sử dụng phương thức clear() như sau:
list.clear();
2.6. size()
Đặc tả: int size()
Ví dụ: Vẫn với ArrayList ban đầu, ta sử dụng phương thức size() để xem số phần tử có trong ArrayList<String> list này như sau:
list.size();
Kết quả: số lượng phần tử của list là: 10
2.7. isEmpty()
Đặc tả: boolean
isEmpty();
Ví dụ: Ta sẽ kiểm tra xem list có rỗng hay không trước và sau khi gọi phương thức clear() như sau:
1 2 3 |
System.out.println("before: "+list.isEmpty()); list.clear(); System.out.println("after: "+list.isEmpty()); |
Kết quả thu được là:
before: false
after: true
2.8. contains()
Đặc tả: boolean
contains(Object o);
Ví dụ: Ta sẽ kiểm tra phần tử “8” và phần tử “11” có trong list hay không như sau:
1 2 3 |
list.contains("8"); list.contains("11"); |
Kết quả như sau:
8: true
11: false
2.9. containsAll()
Đặc tả: boolean
containsAll(Collection<?> c);
Ví dụ: Ta sẽ sử dụng lại 2 ArrayList list2 và list3 trong phần 2.2 và 2.4 ở trên để kiểm tra xem trong 2 ArrayList trên thì đâu là tập con của ArrayList list đã cho.
1 2 3 |
list.containsAll(list2); list.containsAll(list3); |
Kết quả là:
list2: false
list3: true
2.10.retainAll()
Đặc tả: boolean
retainAll(Collection<?> c);
Ví dụ: Ta tạo 1 ArrayList<String> mới là list4 bao gồm 3 phần tử “9”, “10” và “11” như sau:
1 2 3 4 |
ArrayList<String> list4 = new ArrayList<>(); list4.add("9"); list4.add("10"); list4.add("11"); |
Sau đó ta sử dụng phương thức retainAll() để giữ lại các phần tử là giao của 2 tập trên như sau:
list.retainAll(list4);
Kết quả sẽ là:
list: 9, 10
2.11. iterator()
Đặc tả: Iterator<E> iterator();
Ví dụ: Ta gọi iterator của list và duyệt qua từng phần tử của list thông qua iterator này như sau:
1 2 3 4 |
System.out.print("list: "); Iterator<String> iterator = list.iterator(); while(iterator.hasNext()){ System.out.print(iterator.next()+" "); |
Kết quả là:
list: 1 2 3 4 5 6 7 8 9 10
Trên đây mình đã giới thiệu tới các bạn Collection Interface và những phương thức chính bên trong. Vì đây là thành phần chính cấu tạo lên Collection Framework và các class bên trong Java Collection Framework hầu hết đều thực thi hoặc trực tiếp hoặc gián tiêp từ interface này nên các bạn hãy có gắng nhớ được các phương thức mà mình giới thiệu phía trên bởi vì trong cả series bài viết về Java Collection Framework này mình sẽ còn sử dụng tới các phương thức này rất rất nhiều lần nữa. Ngoài ra nếu các bạn có thắc mắc hãy cứ đặt câu hỏi trên blog của mình, hoặc nếu bạn nào muốn tìm hiểu thêm có thể tham khảo tại trang javadoc của oracle: https://docs.oracle.com/javase/7/docs/api/java/util/Collection.html
Xin cảm ơn và hẹn gặp lại các bạn trong các bài viết khác trên blog của mình.
- Google+
- Wordpress