Tìm hiểu Collections Algorithms, Custom Implementations and Interoperability

35 650 0
Tìm hiểu Collections Algorithms, Custom Implementations and Interoperability

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tìm hiểu Collections Algorithms, Custom Implementations and Interoperability

Tìm hiểu Collections: Algorithms, Custom Implementations and Interoperability Giảng viên hướng dẫn: TS. Nguyễn Hồng Quang Nội dung trình bày  Khái quát về Collection  Các thuật toán với Collection  Thiết kế Collection theo định nghĩa của người dùng  Khả năng tương tác giữa các Collection 2 Khái quát về Collection trong Java (1)  Một Collection đơn giản là một đối tượng nhóm nhiều phần tử bắt nguồn từ các phần tử đơn.  Ý nghĩa: Được sử dụng để lưu trữ, trả lại, thao tác và giao tiếp với tập hợp dữ liệu.  Java Có các dạng Collection cơ bản sau:  List  Map  Set 3 Khái quát về Collection trong Java (2)  Framwork Collection: kiến trúc thống nhất để miêu tả và thao tác với Collection, gồm:  Interfaces: cho phép Collection thao tác độc lập với các implementation được miêu tả.  Implementation: thể hiện cụ thể của các giao diện Collections.  Algorithms: các phương pháp thực hiện tính toán hữu ích như: tìm kiếm, sắp xếp các phần tử trong Collection.  Lợi ích của Framework:  Giảm thiểu khó khan khi lập trình  Tăng tốc độ và chất lượng chương trình  Cho phép tương tác giữa các API không liên quan  Tiết kiệm công sức học và sử dụng các API mới.  Tiết kiệm công sức thiết kế các API mới  Thúc đấy việc tái sử dụng phần mềm 4 Các thuật toán với Collection  Framework Collection của Java hỗ trợ một số thuật toán với Collection, bao gồm:  Sắp xếp  Xáo trộn (Shuffling)  Thủ tục thao tác dữ liệu (Routine Data Manipulation)  Tìm kiếm  Tổ hợp (Composition)  Tìm cực trị 5 Các thuật toán với Collection – Sắp xếp (1)  Thuật toán thao tác với Collection dạng List.  Mục đích: Sắp xếp các phần tử trong List tăng dần theo một quan hệ thứ tự nào đó.  Được thực hiện bằng cách gọi phương thức: Collections.sort()  Có 2 dạng:  Dạng cơ bản:  Dạng tùy biến 6 Các thuật toán với Collection – Sắp xếp (2)  Dạng cơ bản:  List được sắp xếp theo thứ tự tự nhiên của các phần tử trong List.  Phần tử là các đối tượng String: sắp xếp theo bảng chữ cái alphabe  Phần tử là các đối tượng Date: sắp xếp theo thứ tự thời gian,….  Cách thức thực hiện:  Truyền tham số là 1 đối tượng List vào lời gọi phương thức sort  Kỹ thuật: sử dụng sắp xếp trộn vì lý do nhanh và ổn định  Nhanh: được đảm bảo chạy trong thời gian nlogn (tương đương với quicksort)  Ổn định: vì không thực hiện sắp xếp với các phần tử ngang nhau (equal elements)  đặc biệt hữu ích khi thực hiện sắp xếp các đối tượng nhiều lần theo các tiêu chí khác nhau. 7 Các thuật toán với Collection – Sắp xếp (3)  Dạng tùy biến:  List được sắp xếp theo thứ tự do người dùng tự định nghĩa.  Để định nghĩa tiêu chí sắp xếp: khai báo đối tượng Comparator  Cách thức thực hiện thuật toán: Truyền vào lời gọi phương thức sort 2 tham số  Tham số thứ nhất: Đối tượng List  Tham số thứ hai: Đối tượng Comparator 8 Các thuật toán với Collection – Xáo trộn (1)  Thao tác với Collection dạng List  Mục đích: Phá hủy mọi dấu vết về thứ tự trong một đối tượng List.  Trái ngược với Sắp xếp.  Cách thức thực hiện: gọi phương thức Collection.shuffle()  Kĩ thuật: Sắp xếp lại List dựa trên một nguồn ngẫu nhiên sao cho tất cả các hoán vị của List có xác suất xảy ra như nhau.  Ứng dụng:  Phù hợp tính chất may mắn của nhiều vấn đề. Ví dụ: tráo bộ bài, xổ số,…  Tạo các test case. 9 Các thuật toán với Collection – Xáo trộn (2)  Có 2 dạng:  Dạng 1: Sử dụng nguồn ngẫu nhiên mặc định  Tham số đầu vào: Đối tượng List  Dạng 2: Sử dụng nguồn ngẫu nhiên theo định nghĩa của người dùng  Nguồn ngẫu nhiên: đối tượng Random cho người dùng khai báo  Tham số đầu vào cho phương thức shuffle: một đối tượng List, một đối tượng Random 10 [...]... int i, int j) Hoán đổi phần tử thứ i và j trong L cho nhau Collections. addAll(Collection c, T elements) Thêm tất cả các elements vào collection c Các thuật toán với Collection – Tìm kiếm (1)  Framework Collection Java cung cấp phương thức tìm kiếm theo thuật toán tìm kiếm nhị phân  Phương thức này thực hiện với Collection dạng List  Mục đích: tìm kiếm một phần tử xác định trong một đối tượng đã sắp... tác dữ liệu (2) Cú pháp Ý nghĩa Collections. reverse(List L) Đảo ngược thứ tự của các phần tử trong L Collections. fill(List L, Obj T) Ghi đè lên tất cả các phần tử của L giá trị T Collections. copy(List dest, List src) Sao chép các phần tử của src sang dest Kích thước của dest phải lớn hơn hoặc bằng của src Nếu dài hơn, các phần tử còn lại của dest sẽ không bị ảnh hưởng Collections. swap(List L, int i,... newMethod(); oldMethod (Collections. enumeration(c)); Khả năng tương tác giữa các Collections (10)  Thiết kế API: Để thiết kế API của mình phối hợp nhịp nhàng với các API khác, người dùng cần nắm vững các quy tắc về:  Tham số đầu vào  Giá trị trả về  Các API cũ  Đây được xem là những quy tắc chuẩn mực để trở thành một “công dân” tốt trong thế giới Collections Khả năng tương tác giữa các Collections (11)... bằng 0 khi và chỉ khi “search key” được tìm thấy Các thuật toán với Collection – Tổ hợp  Framework Collection Java cung cấp 2 phương thức cho phép thực hiện các thao tác tổ hợp  frequency  disjoint  Cả 2 phương thức này đều có thể thực hiện với mọi Collection Cú pháp Ý nghĩa Collections. frequency(Collec Đếm số lần đối tượng o xuất hiện trong c tion c, Object o) Collections. disjoint(Collect Kiểm tra... thực hiện  Bạn có thể gọi:  ListIterator,  lấy kích thước,  phương thức tìm kiếm,  tính toán mã băm,  so sánh biến chuỗi Khả năng tương tác giữa các Collections (1)  Framework Collection Java ra đời sau khi nền tảng, công nghệ Java đã phát triển đến một mức nhất định  Sự xuất hiện mới của Framework này nói chung và của Collections nói riêng cần phải tương tác được với các thành phần đã có trong... oldMethod(arg); newMethod(result1); newMethod(result2); Khả năng tương tác giữa các Collections (5)  Tương thích upward:  Nếu API trả về một Enumeration, phương thức Collection.list sẽ chuyển đổi nó sang một Collection  Trường hợp này ít phổ biến Enumeration e = oldMethod(arg); newMethod (Collections. list(e)); Khả năng tương tác giữa các Collections (6)  Tương thích backward: Collection mới API ? API (Yêu cầu... xếp trước khi thực hiện tìm kiếm  Có 2 dạng:  Dạng 1: tham số gốm một đối tượng List và một phần tử để tìm kiếm, gọi là “search key” Dạng này giả định List được sắp xếp theo thứ tự tự nhiên của phần tử  Dạng 2: ngoài tham số như Dạng 1, có them tham số là tiêu chí sắp xếp Comparator Dạng này giả định List được sắp xếp tăng dần theo Comparator Các thuật toán với Collection – Tìm kiếm (2)  Cả 2 dạng... tượng o xuất hiện trong c tion c, Object o) Collections. disjoint(Collect Kiểm tra xem c1 và c2 có phần tử chung ion c1, Collection c2) hay không? Nếu có trả về true Các thuật toán với Collection – Tìm cực trị  Collections cung cấp 2 phương thức min và max cho phép tim phần tử nhỏ nhất và lớn nhất trong một Collection  Có thể thực hiện với mọi Collection  Mỗi phương thức này lạicó 2 dạng:  Dạng 1: Một... giữa các Collections (8)  Tương thích backward:  Trường hợp: API mới trả về một Collection và API cũ yêu cầu một Vector  Constructor của Vector sẽ thực hiện việc này Collection c = newMethod(); oldMethod(new Vector(c));  Trường hợp: API mới trả về một Collection và API cũ yêu cầu một Hashtable  Tương tự với Vector: Map m = newMethod(); oldMethod(new Hashtable(m)); Khả năng tương tác giữa các Collections. .. Collection cũ: gọi là tương thích backward Khả năng tương tác giữa các Collections (3)  Tương thích upward: Collection cũ API ? API (Yêu cầu Collection mới)  Để hai API này phối hợp trơn chu: phải chuyển các Collection cũ sang Collection mới  Việc này được thực hiện dễ dàng nhờ sự hỗ trợ của Framework Collection Khả năng tương tác giữa các Collections (4)  Tương thích upward:  Nếu API cũ trả về một mảng . Tìm hiểu Collections: Algorithms, Custom Implementations and Interoperability Giảng viên hướng dẫn: TS. Nguyễn Hồng Quang Nội. Collection – Tìm kiếm (1)  Framework Collection Java cung cấp phương thức tìm kiếm theo thuật toán tìm kiếm nhị phân.  Phương thức này thực hiện với Collection dạng List  Mục đích: tìm kiếm một. liệu (2) Cú pháp Ý nghĩa Collections. reverse(List L) Đảo ngược thứ tự của các phần tử trong L Collections. fill(List L, Obj T) Ghi đè lên tất cả các phần tử của L giá trị T Collections. copy(List

Ngày đăng: 01/08/2015, 20:20

Từ khóa liên quan

Mục lục

  • Slide 1

  • Nội dung trình bày

  • Khái quát về Collection trong Java (1)

  • Khái quát về Collection trong Java (2)

  • Các thuật toán với Collection

  • Các thuật toán với Collection – Sắp xếp (1)

  • Các thuật toán với Collection – Sắp xếp (2)

  • Các thuật toán với Collection – Sắp xếp (3)

  • Các thuật toán với Collection – Xáo trộn (1)

  • Các thuật toán với Collection – Xáo trộn (2)

  • Các thuật toán với Collection – Thủ tục thao tác dữ liệu (1)

  • Các thuật toán với Collection – Thủ tục thao tác dữ liệu (2)

  • Các thuật toán với Collection – Tìm kiếm (1)

  • Các thuật toán với Collection – Tìm kiếm (2)

  • Các thuật toán với Collection – Tổ hợp

  • Các thuật toán với Collection – Tìm cực trị

  • Thiết kế Collection theo định nghĩa người dùng (1)

  • Thiết kế Collection theo định nghĩa người dùng (3)

  • Thiết kế Collection theo định nghĩa người dùng (4)

  • Thiết kế Collection theo định nghĩa người dùng (5)

Tài liệu cùng người dùng

Tài liệu liên quan