1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình Java nâng cao: Colletion - Nguyễn Hữu Thể

19 17 0

Đ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

Bài giảng Lập trình Java nâng cao: Colletion do Nguyễn Hữu Thể biên soạn cung cấp cho bạn những kiến thức về collection như khái niệm, Hệ thống cấp bậc collection và các phương thức của Interface Collection. Mời các bạn tham khảo!

LẬP TRÌNH JAVA NÂNG CAO Collection Nguyễn Hữu Thể Collection − Collection đối tượng mà nhóm đối tượng khác thành phần tử cung cấp phương thức để thêm, xóa, lấy, duyệt phần tử… ▪ Phần tử Collection không phép kiểu nguyên thủy − Collections Framework thống cách thức sử dụng collection, gồm thành phần chính: ▪ Interface ▪ Lớp triển khai ▪ Thuật tốn − Sử dụng đối tượng Iterator để duyệt qua tất phần tử collection − Ưu điểm: tiện dụng, hiệu cao Hệ thống cấp bậc Collection Collection − Iterable interface ▪ Chứa liệu thành viên Iterator interface − Iterator interface ▪ Cung cấp phương tiện để lặp lặp lại thành phần từ đầu đến cuối collection − Các phương thức Iterator interface Phương thức Mô tả public boolean hasNext() Trả true iterator phần tử phần tử duyệt public object next() Trả phần tử di chuyển trỏ trỏ tới phần tử public void remove() Loại bỏ phần tử cuối trả Iterator Nó sử dụng Các phương thức Interface Collection Phương thức public boolean add(Object element) public boolean addAll(Collection c) public boolean remove(Object element) public boolean removeAll(Collection c) public boolean retainAll(Collection c) Mô tả Chèn phần tử vào collection Chèn phần tử collection định vào collection gọi phương thức Xóa phần tử từ collection Xóa tất phần tử collection định từ collection gọi phương thức Xóa tất thành phần từ collection Trả lại tổng số phần tử collection public int size() Loại bỏ tổng số phần tử khỏi collection public void clear() public boolean contains(Object element) Tìm kiếm phần tử public boolean containsAll(Collection c) Tìm kiếm collection định collection public Iterator iterator() Trả iterator public Object[] toArray() Chuyển đổi collection thành mảng (array) public boolean isEmpty() Kiểm tra collection trống public boolean equals(Object element) So sánh collection public int hashCode() Trả số hashcode collection import java.util.ArrayList; import java.util.LinkedList; Các phương import java.util.List; thức Interface Collection public class CollectionExample { public static void main(String[] args) { List arrayList = new ArrayList(); arrayList.add("Python"); arrayList.add("Java"); arrayList.add("C++"); System.out.println("Các phần tử ArrayList: " + arrayList); List linkedList = new LinkedList(); linkedList.add("Python"); linkedList.add("Java"); linkedList.add("C++"); System.out.println("Các phần tử LinkedList: " + linkedList); } } Các phần tử ArrayList: [Python, Java, C++] Các phần tử LinkedList: [Python, Java, C++] import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; Các phương thức Interface Collection public class CollectionExample { public static void main(String[] args) { // new TreeSet() xếp phần tử Set hashSet = new HashSet(); hashSet.add("Python"); hashSet.add("Java"); hashSet.add("Java"); hashSet.add("C++"); System.out.println("Các phần tử Set: " + hashSet); // new TreeMap() xếp phần tử dựa vào key chúng Map hashMap = new HashMap(); hashMap.put("Language2", "Java"); hashMap.put("Language1", ".Net"); System.out.println("Các phần tử Map: " + hashMap); } } Các phần tử Set: [Java, C++, Python] Các phần tử Map: {Language1=.Net, Language2=Java} ArrayList − Lớp ArrayList: mảng động ▪ Kế thừa lớp AbstractList implements interface List ▪ ArrayList chứa phần tử trùng lặp ▪ ArrayList trì thứ tự phần tử thêm vào ▪ ArrayList không đồng (non-synchronized) ▪ ArrayList cho phép truy cập ngẫu nhiên lưu liệu theo mục ArrayList - constructor Constructor Mô tả ArrayList() Khởi tạo danh sách mảng trống ArrayList(Collection c) Xây dựng danh sách mảng khởi tạo với phần tử collection c ArrayList(int capacity) Xây dựng danh sách mảng mà có dung lượng ban đầu định ArrayList - phương thức Phương thức boolean add(Object o) Mô tả Nối thêm phần tử định vào cuối danh sách void add(int index, Object element) Chèn phần tử định số vị trí boolean addAll(Collection c) Nối tất phần tử collection định vào cuối danh sách này, theo thứ tự chúng trả lặp iterator boolean addAll(int index, Collection Chèn tất phần tử collection định vào danh sách này, vị trí định c) void retainAll(Collection c) Xóa phần tử không thuộc collection c không thuộc list void removeAll(Collection c) Object[] toArray() Xóa phần tử thuộc collection c thuộc list khỏi list Trả mục danh sách với xuất phần tử định, -1 danh sách không chứa phần tử Trả mục danh sách với xuất cuối phần tử định, -1 danh sách không chứa phần tử Trả mảng chứa tất phần tử danh sách theo thứ tự Object[] toArray(Object[] a) Trả mảng chứa tất phần tử danh sách theo thứ tự Object clone() void clear() Trả ArrayList void trimToSize() Cắt dung lượng ArrayList kích thước danh sách int indexOf(Object o) int lastIndexOf(Object o) Xóa tất phần tử từ danh sách 10 Ví dụ: ArrayList có kiểu generic String import java.util.ArrayList; import java.util.Iterator; public class ArrayListExample1 { public static void main(String args[]) { ArrayList list = new ArrayList(); list.add("Java"); list.add("C++"); list.add("PHP"); // Show list through Iterator Iterator itr = list.iterator(); while (itr.hasNext()) { System.out.print(itr.next() + ", "); } // Show list through for-each System.out.println(); for (String obj : list) { System.out.print(obj + ", "); } // Show list through index System.out.println(); int size = list.size(); for (int i = 0; i < size; i++) { System.out.print(list.get(i) + ", "); } } } Output: Java, C++, PHP, Java, C++, PHP, Java, C++, PHP, 11 VD: ArrayList có kiểu generic đối tượng người dùng định nghĩa class Student { private String name; private int age; public Student(String name, int age) { super(); this.name = name; this.age = age; } @Override public String toString() { return "Student@[name=" + name + ", age=" + age + "]"; } } import java.util.ArrayList; public class ArrayListExample3 { public static void main(String[] args) { // Create listStudent ArrayList listStudent = new ArrayList(); // Create students Student student1 = new Student("A", 18); Student student2 = new Student("B", 20); Student student3 = new Student("C", 19); // Add objects to listStudent listStudent.add(student1); listStudent.add(student2); listStudent.add(student3); // Show listStudent for (Student student : listStudent) { System.out.println(student.toString() ); } Output: Student@[name=A, age=18] Student@[name=B, age=20] Student@[name=C, age=19] } } 12 VD: addAll(), removeAll(), retainAll() import java.util.ArrayList; public static void showList(ArrayList list) { for (String obj : list) { System.out.print("\t" + obj + ", "); } System.out.println(); } public class ArrayListExample4 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("Java"); list.add("C++"); list.add("Python"); // addAll() ArrayList listA = new ArrayList(); listA.addAll(list); System.out.print("listA:"); showList(listA); // retainAll() listA ArrayList listB = new ArrayList(); listB.add("Java"); listA.retainAll(listB); System.out.print("listA:"); showList(listA); // removeAll() listA list.removeAll(listA); System.out.print("listA:"); showList(list); } } Output: listA:Java, C++, Python, listA:Java, listA:C++, Python, 13 LinkedList − Lớp LinkedList sử dụng cấu trúc danh sách liên kết Doubly (Doubly Linked List) để lưu trữ phần tử ▪ LinkedList chứa phần tử trùng lặp ▪ LinkedList trì thứ tự phần tử thêm vào ▪ LinkedList không đồng (non-synchronized) ▪ Lớp LinkList, thao tác nhanh khơng cần phải dịch chuyển phần tử bị xoá khỏi danh sách ▪ Lớp ArrayList sử dụng list (danh sách), stack (ngăn xếp) queue (hàng đợi) 14 LinkedList - constructor Constructor Mô tả LinkedList() Xây dựng danh sách trống LinkedList(Collection c) Xây dựng danh sách chứa phần tử collection định, theo thứ tự chúng trả iterator collection 15 LinkedList - constructor Phương thức boolean add(Object o) Mô tả Nối thêm phần tử định vào cuối danh sách void add(int index, Object element) Chèn phần tử định số vị trí quy định danh sách void addFirst(Object o) Chèn phần tử định vào đầu danh sách void addLast(Object o) Chèn phần tử định vào cuối danh sách int size() Trả lại số lượng phần tử danh sách boolean contains(Object o) Trả true danh sách có chứa phần tử định boolean remove(Object o) Xóa phần tử định danh sách Object getFirst() Trả phần tử danh sách Object getLast() Trả lại phần tử cuối danh sách int indexOf(Object o) Trả mục danh sách với xuất phần tử định, -1 danh sách không chứa phần tử int lastIndexOf(Object o) Trả lại mục danh sách với xuất cuối phần tử định, -1 danh sách không chứa phần tử 16 LinkedList - constructor import java.util.Iterator; import java.util.LinkedList; // add first linkedList.addFirst("Python"); public class LinkedListExample1 { public static void main(String[] args) { // Show list through for-each System.out.println(); for (String obj : linkedList) { System.out.print(obj + ", "); } LinkedList linkedList = new LinkedList(); linkedList.add("Java"); linkedList.add("C++"); linkedList.add("PHP"); linkedList.add("Java"); // add last linkedList.addLast("Ruby"); // Show list through index System.out.println(); int size = linkedList.size(); for (int i = 0; i < size; i++) { System.out.print(linkedList.get(i) + ", "); } // Show list through Iterator Iterator itr = linkedList.iterator(); while (itr.hasNext()) { System.out.print(itr.next() + ", "); } } } Output: Java, C++, PHP, Java, Python, Java, C++, PHP, Java, Python, Java, C++, PHP, Java, Ruby, 17 ArrayList LinkedList − Giống nhau: implements từ List, trì thứ tự, non-synchronized − Khác nhau: ArrayList LinkedList 1) ArrayList nội sử dụng mảng động để lưu trữ phần tử LinkedList nội sử dụng danh sách liên kết doubly để lưu trữ phần tử 2) Thao tác với ArrayList chậm sử dụng nội mảng Nếu phần tử xoá khỏi mảng, tất bit chuyển nhớ Thao tác với LinkedList nhanh so với ArrayList sử dụng danh sách liên kết doubly khơng cần chuyển đổi bit nhớ 3) Lớp ArrayListchỉ hoạt động list implements interface List Lớp LinkedList hoạt động list queue(hàng đợi) implements interface List Deque 4) ArrayList tốt việc lưu trữ LinkedList tốt việc thao tác truy cập liệu liệu 18 TÀI LIỆU THAM KHẢO − www.tutorialspoint.com/java − viettuts/java-collection 19 ... "); } } } Output: Java, C++, PHP, Java, Python, Java, C++, PHP, Java, Python, Java, C++, PHP, Java, Ruby, 17 ArrayList LinkedList − Giống nhau: implements từ List, trì thứ tự, non-synchronized −... phần tử ArrayList: [Python, Java, C++] Các phần tử LinkedList: [Python, Java, C++] import java. util.HashMap; import java. util.HashSet; import java. util.Map; import java. util.Set; Các phương thức... tử định, -1 danh sách không chứa phần tử int lastIndexOf(Object o) Trả lại mục danh sách với xuất cuối phần tử định, -1 danh sách không chứa phần tử 16 LinkedList - constructor import java. util.Iterator;

Ngày đăng: 03/01/2022, 09:11

Xem thêm:

TỪ KHÓA LIÊN QUAN