Thông tin tài liệu:
Bài 10 - Collections framework. Những nội dung chính trong bài giảng gồm có: Giới thiệu chung về collection, các giao diện trong collections framework, list và iterator, tìm kiếm và sắp xếp trên list. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình Java: Bài 10 - Bùi Trọng TùngBÀI 10.COLLECTIONS FRAMEWORK 1Nội dung• Giới thiệu chung• Các giao diện trong Collections framework• List và Iterator• Tìm kiếm và sắp xếp trên List 21. GIỚI THIỆU CHUNG VỀ COLLECTION 3Collection là gì?• Collection là một đối tượng mà nó nhóm các đối tượng khác thành phần tử và cung cấp các phương thức cơ bản để thêm, xóa, lấy, duyệt các phần tử… • Phần tử của Collection không được phép là kiểu nguyên thủy• Collections Framwork thống nhất cách thức sử dụng các collection, gồm 3 thành phần chính: • Giao diện • Lớp triển khai • Thuật toán• Sử dụng đối tượng Iterator để duyệt qua tất cả các phần tử của collection• Được xây dựng dựa trên kỹ thuật lập trình tổng quát• Ưu điểm: tiện dụng, hiệu năng cao 4Các giao diện và lớp triển khai 5Một ví dụ đơn giảnimport java.util.List;import java.util.ArrayList;import java.util.Iterator;public class ArrayListPostJDK15Test { public static void main(String[] args) { List list = new ArrayList(); list.add(alpha); // add an element list.add(beta); list.add(charlie); System.out.println(list); // [alpha, beta, charlie] 6Một ví dụ đơn giản(tiếp) // Iterator of Strings Iterator iter = list.iterator(); while (iter.hasNext()) { String str = iter.next(); System.out.println(str); } for (String str : list) { System.out.println(str); } }} 72. CÁC GIAO DIỆN COLLECTION 8Các giao diện 9Các giao diện (tiếp)• Giao diện Iterable//Trả lại một đối tượng Iterator để duyệt qua các phần tửIterator iterator()• Giao diện Iterator// Trả vể true nếu còn phần tử chưa được duyệtboolean hasNext()// Trả về phần tử tiếp theo trong collectionE next()// Xóa phần tử đang duyệtvoid remove() 10Collection// Trả về số phần tử của collectionint size()// Xóa mọi phần tử trong collectionvoid clear()// Trả về true nếu không có phần tử nào trong collectionboolean isEmpty()// Thêm 1 phần tử vào collection, trả về true nếu thành côngboolean add(E element)// Xóa 1 phần tử, trả về true nếu thành côngboolean remove(Object element)//Trả về true nếu trong collection chứa phần tử elementboolean contains(Object element)// Chuyển collection thành mảngObject[] toArray() 11List, Set và Queue• Là các giao diện kế thừa từ giao diện Collection• List: lưu trữ các phần tử một cách tuần tự, các phần tử có thể giống nhau mảng có kích thước thay đổi • Các lớp triển khai: ArrayList, LinkedList, Vector, Stack• Set: mô hình hóa tập hợp trong Toán học, không chấp nhận có các phần tử giống nhau • Các lớp triển khai: Set, HashSet, LinkedHashSet • Các giao diện kế thừa: SortedSet có triển khai là TreeSet• Queue: Hàng đợi FIFO • Giao diện con: Deque • Triển khai từ giao diện con: PriorityQueue, ArrayDeque và LinkedList. 12Giao diện Map• Tổ chức các phần tử thành cặp • K: khóa. Không chấp nhận khóa có giá trị trùng nhau • V: giá trị• Các triển khai: HashMap, Hashtable, LinkedHashMap• Giao diện con: SortedMap • Triển khai: TreeMap 133. LIST VÀ CÁC LỚP TRIỂN KHAI 14Cây kế thừa 15Giao diện List//Một số phương thức truy cập danh sách qua chỉ sốvoid add(int index, E element) // thêmE set(int index, E element) // thay thếE get(int index) // lấy phần tửE remove(int index) // xóa phần tử//vị trí của phần tử đầu tiên giống với objint indexOf(Object obj)//vị trí của phần tử cuối cùng giống objint lastIndexOf(Object obj)//Lấy ra một danh sách conList subList(int fromIndex, int toIndex) 16Giao diện List//Một số phương thức kế thừa từ Collectionint size()boolean isEmpty()boolean add(E element)boolean remove(Object obj)boolean contains(Object obj)void clear() 17Các lớp triển khai từ List• ArrayList: lớp triển khai tiện dụng nhất, được sử dụng thường xuyên để thay thế cho mảng • Các phương thức của ArrayList là không đồng bộ (non- synchronized) Khi có nhiều luồng truy cập tới ArrayList cần đồng bộ hóa các luồng bằng Collections.synchronizedList(List list)• Vector: được phát triển từ Java 1.0, ...