Thuật Toán Collection Trong Java
Có thể bạn quan tâm
- Khóa học Java
- Khóa học Offline tại Hà Nội
- Khóa học Java Online tại Udemy
- Java cơ bản
- Giới thiệu Java
- Java là gì?
- Lịch sử Java
- Tổng quan
- Cài đặt Java
- Cách thiết lập Path
- Chương trình Hello World
- Phân tích chương trình Hello World
- Cú pháp Java cơ bản
- JDK, JRE và JVM
- Biến trong Java
- Kiểu dữ liệu
- Toán tử
- Các kiểu vòng lặp
- Lệnh if, switch
- Đối tượng Number
- Đối tượng Character
- Khái niệm Hướng đối tượng
- Khái niệm OOP
- Lớp và Đối tượng
- Phương thức
- Nạp chồng phương thức (Overloading)
- Constructor
- Từ khóa static
- Từ khóa this
- Tính kế thừa (IS-A)
- Quan hệ (HAS-A)
- Ghi đè phương thức (Overriding)
- Kiểu trả về Covariant
- Từ khóa super
- Từ khóa final
- Tính đa hình
- Dynamic Binding
- Toán tử instanceof
- Tính trừu tượng
- Lớp abstract
- Interface
- Lớp abstract vs Interface
- Java Package
- Các kiểu Modifier
- Non-Access Modifier
- Access Modifier
- Tính bao đóng
- Lớp Object
- Nhân bản đối tượng
- Mảng (Array)
- Lớp Wrapper
- Gọi bởi giá trị
- Từ khóa strictfp
- Date & Time
- Regular Expression
- File và I/O trong Java
- File và I/O
- ByteArrayInputStream
- DataInputStream
- ByteArrayOutputStream
- DataOutputStream
- Lớp File
- Lớp FileReader
- Lớp FileWriter
- String trong Java
- Đối tượng String
- Immutable String
- So sánh chuỗi
- Nối chuỗi
- Chuỗi con
- Phương thức của lớp String
- Lớp StringBuffer
- Lớp StringBuilder
- String vs StringBuffer
- StringBuilder vs StringBuffer
- Tạo Immutable String
- Phương thức toString()
- Lớp StringTokenizer
- Xử lý ngoại lệ (Exception Handling)
- Exception là gì
- Khối try-catch
- Khối finally
- Từ khóa throw
- Từ khóa throws
- ExceptionHandling vs MethodOverriding
- Custom Exception
- Cấu trúc dữ liệu trong Java
- Cấu trúc dữ liệu
- Enumeration Interface
- Lớp BitSet
- Lớp Vector
- Lớp Stack
- Lớp Dictionary
- Lớp Hashtable
- Lớp Properties
- Collection trong Java
- Java Collection
- Collection Interface
- List Interface
- Set Interface
- SortedSet Interface
- Map Interface
- MapEntry Interface
- SortedMap Interface
- Lớp LinkedList
- Lớp ArrayList
- Lớp HashSet
- Lớp LinkedHashSet
- Lớp TreeSet
- Lớp HashMap
- Lớp TreeMap
- Thuật toán Collection
- Sử dụng Iterator
- Sử dụng Comparator
- Java nâng cao
- Java Generic
- Java Serialization
- Lập trình mạng
- Gửi Email
- Java Multithread
- Cơ bản về Applet
- Tạo Javadoc
- Tài liệu tham khảo Java
- Inner Class và chuyển đổi dữ liệu
- Tài liệu Java tham khảo
- 200 Câu hỏi phỏng vấn Java
- Ví dụ Java
Collection Framework định nghĩa một số thuật toán mà có thể áp dụng tới các Collection và Map.
Những thuật toán này được định nghĩa như là các phương thức static bên trong lớp Collection. Một số phương thức có thể ném một ClassCastException, xảy ra khi cố gắng so sánh các kiểu không tương thích, hoặc ném một UnsupportedOperationException, xảy ra khi cố gắng sửa đổi một Unmodifiable Collection.
Để hiểu sâu hơn các khái niệm được trình bày trong chương này, mời bạn tham khảo loạt bài: Ví dụ về Collection trong Java.
Dưới đây liệt kê các phương thức được định nghĩa trong thuật toán của Collection Framework trong Java:
STT | Phương thức và Miêu tả |
---|---|
1 | static int binarySearch(List list, Object value, Comparator c) Tìm kiếm value trong list được sắp xếp theo c. Trả về vị trí của value trong list; hoặc trả về -1 nếu value không được tìm thấy |
2 | static int binarySearch(List list, Object value) Tìm kiếm value trong list. List phải được xếp thứ tự. Trả về vị trí của value trong list; trả về -1 nếu không tìm thấy value |
3 | static void copy(List list1, List list2) Sao chép các phần tử của list2 vào list1 |
4 | static Enumeration enumeration(Collection c) Trả về một bản liệt kê qua c |
5 | static void fill(List list, Object obj) Gán obj tới mỗi phần tử của list |
6 | static int indexOfSubList(List list, List subList) Tìm kiếm trong list về sự xuất hiện đầu tiên của subList. Trả về chỉ mục của so khớp đầu tiên; trả về -1 nếu không có so khớp được tìm thấy |
7 | static int lastIndexOfSubList(List list, List subList) Tìm kiếm trong list về sự xuất hiện cuối cùng của subList. Trả về chỉ mục của so khớp đầu tiên; trả về -1 nếu không có so khớp được tìm thấy |
8 | static ArrayList list(Enumeration enum) Trả về một ArrayList mà chứa các phần tử của enum |
9 | static Object max(Collection c, Comparator comp) Trả về phần tử tối đa trong c như được xác định bởi comp |
10 | static Object max(Collection c) Trả về phần tử tối đa trong c như được xác định bởi thứ tự tự nhiên. Collection không cần xếp theo thứ tự |
11 | static Object min(Collection c, Comparator comp) Trả về phần tử tối thiểu trong c như được xác định bởi comp. Collection không cần xếp theo thứ tự |
12 | static Object min(Collection c) Trả về phần tử tối thiểu trong c như được xác định bởi thứ tự tự nhiên |
13 | static List nCopies(int num, Object obj) Trả về num bản sao của obj được chứa trong một list không đổi. num phải lớn hơn hoặc bằng 0 |
14 | static boolean replaceAll(List list, Object old, Object new) Thay thế tất cả old bởi new trong list. Trả về true nếu có ít nhất một sự thay thế xảy ra. Nếu không là false |
15 | static void reverse(List list) Đảo ngược dãy trong list |
16 | static Comparator reverseOrder( ) Trả về một comparator đảo ngược |
17 | static void rotate(List list, int n) Quay list bởi n vị trí tới bên phải. Để quay sang bên trái, sử dụng một giá trị âm cho n |
18 | static void shuffle(List list, Random r) Xáo trộn các phần tử trong list bởi sử dụng r như là một nguồn của các số ngẫu nhiên |
19 | static void shuffle(List list) Xáo trộn các phần tử trong list |
20 | static Set singleton(Object obj) Trả về obj như là một set không thay đổi. Đây là một cách dễ dàng để biến đổi một đối tượng đơn vào trong một set |
21 | static List singletonList(Object obj) Trả về obj như là một list không thay đổi. Đây là một cách dễ dàng để biến đổi một đối tượng đơn vào trong một list |
22 | static Map singletonMap(Object k, Object v) Trả về cặp key/value (k/v) như là một map không thay đổi. Đây là một cách dễ dàng để biến đổi một cặp key/value đơn vào trong một map |
23 | static void sort(List list, Comparator comp) Xếp thứ tự các phần tử trong list như đã xác định bởi comp |
24 | static void sort(List list) Xếp thứ tự các phần tử trong list như đã xác định bởi thứ tự tự nhiên |
25 | static void swap(List list, int idx1, int idx2) Trao đổi các phần tử trong list tại các chỉ mục được xác định bởi idx1 và idx2 |
26 | static Collection synchronizedCollection(Collection c) Trả về một Collection an toàn luồng (thread-safe) bởi c |
27 | static List synchronizedList(List list) Trả về một thread-safe list bởi list |
28 | static Map synchronizedMap(Map m) Trả về một thread-safe map bởi m |
29 | static Set synchronizedSet(Set s) Trả về một thread-safe set bởi s |
30 | static SortedMap synchronizedSortedMap(SortedMap sm) Trả về một thread-safe sorted set bởi sm |
31 | static SortedSet synchronizedSortedSet(SortedSet ss) Trả về một thread-safe set bởi ss |
32 | static Collection unmodifiableCollection(Collection c) Trả về một unmodifiable collection bởi c |
33 | static List unmodifiableList(List list) Trả về một unmodifiable list bởi list |
34 | static Map unmodifiableMap(Map m) Trả về một unmodifiable map bởi m |
35 | static Set unmodifiableSet(Set s) Trả về một unmodifiable set bởi s |
36 | static SortedMap unmodifiableSortedMap(SortedMap sm) Trả về một unmodifiable sorted map bởi sm |
37 | static SortedSet unmodifiableSortedSet(SortedSet ss) Trả về một unmodifiable sorted set bởi ss |
Ví dụ
Ví dụ sau minh họa các thuật toán đa dạng của Collection trong Java:
import java.util.*; public class AlgorithmsDemo { public static void main(String args[]) { // Tao va khoi tao linked list LinkedList ll = new LinkedList(); ll.add(new Integer(-8)); ll.add(new Integer(20)); ll.add(new Integer(-20)); ll.add(new Integer(8)); // Ta mot comparator voi thu tu dao nguoc Comparator r = Collections.reverseOrder(); // Sap xep list boi su dung comparator Collections.sort(ll, r); // Lay iterator Iterator li = ll.iterator(); System.out.print("List duoc sap xep theo thu tu dao nguoc la: "); while(li.hasNext()){ System.out.print(li.next() + " "); } System.out.println(); Collections.shuffle(ll); // Hien thi danh sach sap xep ngau nhien li = ll.iterator(); System.out.print("List sau khi bi xao tron la: "); while(li.hasNext()){ System.out.print(li.next() + " "); } System.out.println(); System.out.println("Minimum: " + Collections.min(ll)); System.out.println("Maximum: " + Collections.max(ll)); } } Quảng cáoNó sẽ cho kết quả sau:
List duoc sap xep theo thu tu dao nguoc la: 20 8 -8 -20 List sau khi bi xao tron la: 20 -20 8 -8 Minimum: -20 Maximum: 20Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS. Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:
Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập doanh nghiệp với Java. Khóa học có giá chỉ 400K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp chị Thu, trợ lý anh Tuyền để hỗ trợ thanh toán qua mã QR ngân hàng Việt Nam, fb: https://www.facebook.com/Thule.59
Anh Tuyền, tác giả khóa học, là cựu sinh viên chương trình đào tạo kĩ sư tài năng của đại học Bách Khoa Hà Nội với hơn 5 năm kinh nghiệm đi làm thực tế doanh nghiệp và cũng là Founder website vietjack.com, web giáo dục phổ biến nhất Việt Nam hiện tại (năm 2024). Java cũng là ngôn ngữ lập trình dễ đi xin việc nhất hiện tại, với mức lương cao, hãy nâng cao kiến thức IT của bản thân mình vì một Việt Nam giàu mạnh.
Loạt bài hướng dẫn của chúng tôi dựa một phần trên nguồn tài liệu của: Tutorialspoint.com
Bài học Java phổ biến tại vietjack.com:
Nạp chồng phương thức (Overloading)
Constructor
ArrayList trong Java
Interface trong Java
Thread trong Java
247 bài tập Java
200 câu phỏng vấn Java
160 bài học ngữ pháp tiếng Anh hay nhất
155 bài học Java tiếng Việt hay nhất
100 bài học Android tiếng Việt hay nhất
247 bài học CSS tiếng Việt hay nhất
197 thẻ HTML cơ bản
297 bài học PHP
101 bài học C++ hay nhất
97 bài tập C++ có giải hay nhất
208 bài học Javascript có giải hay nhất
Học cùng VietJack
Từ khóa » Các Thuật Toán Cơ Bản Trong Java
-
Tự Học Java | Các Thuật Toán Trong Collection Của Java »
-
Chương Trình Kinh điển Trong Java - Học Java Miễn Phí Hay Nhất
-
Các Thuật Toán Sắp Xếp Trong Java - VietTuts
-
Cơ Bản Về Thuật Toán - Giúp Bạn Học Thuật Toán đơn Giản Hơn
-
Bài Tập Về Các Thuật Toán Sắp Xếp Trong Java Có Lời Giải - Học Hỏi Net
-
10 Thuật Toán Hàng đầu Dành Cho Lập Trình Viên | TopDev
-
Bài Tập Java Có Lời Giải Cơ Bản đến Nâng Cao - Freetuts
-
20 BÀI TẬP JAVA CƠ BẢN CHO NGƯỜI MỚI HỌC (CÓ ĐÁP ÁN)
-
Java 11. Các Phép Toán Cơ Bản Trong Java | Tự Học Lập Trình Java
-
Tổng Hợp Từ A - Z Kiến Thức Java Cơ Bản
-
Lập Trình Java Cơ Bản: Một Số Thuật Toán Hữu Dụng Với Mảng
-
Java Cấu Trúc Dữ Liệu - Giải Thuật - Techmaster
-
Hướng Dẫn Viết Sơ đồ Khối Thuật Toán Trong Lập Trình
-
Garbage Collection Trong Java - Tìm Hiểu Về Bộ Thu Gom Rác Trong ...