Tài liệu Lập trình Java cơ bản- Bài 8 (Collections) ppt

62 1.3K 14
Tài liệu Lập trình Java cơ bản- Bài 8 (Collections) ppt

Đ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

1 Lập trình Java cơ bản Cao Đức Thông   Trần Minh Tuấn­ cdthong@ifi.edu.vn, tmtuan@ifi.edu.vn  2 Bài 8. Collections • Cấu trúc dữ liệu trong Java • Linked List • Stack và Queue • Tree • Collections Framework • Danh sách (List) • Tập hợp (Set) • Bảng ánh xạ (Map) • Bài tập 3 Cấu trúc dữ liệu • Cấu trúc dữ liệu là cách tổ chức dữ liệu để giải  quyết vấn đề. • Một số cấu trúc dữ liệu phổ biến: • Mảng (Array) • Danh sách liên kết (Linked List) • Ngăn xếp (Stack) • Hàng đợi (Queue) • Cây (Tree) 4 Linked List • Linked list là cấu trúc gồm các node liên kết với nhau  thông qua các mối liên kết. Node cuối linked list  được đặt là null để đánh dấu kết thúc danh sách. • Linked list giúp tiết kiệm bộ nhớ so với mảng trong  các bài toán xử lý danh sách. • Khi chèn/xoá một node trên linked list, không phải  dãn/dồn các phần tử như trên mảng. • Việc truy nhập trên linked list luôn phải tuần tự. 5 Linked List • Thể hiện Node thông qua lớp tự tham chiếu (self­ referential class) class Node { private int data; private Node nextNode; // constructors and methods . } 15 10 6 Linked List • Một linked list được quản lý bởi tham chiếu tới  node đầu và node cuối. H D Q firstNode lastNode . 7 Cài đặt Linked List // Dinh nghia mot node trong linked list          class ListNode  {      int data;      ListNode nextNode;      ListNode(int value)       { this(value, null);       }      ListNode(int value, ListNode node)      { data = value;     nextNode = node;       }      int getData()       {  return data;  }      ListNode getNext()  {  return nextNode;  } }     8 Cài đặt Linked List // Dinh nghia lop LinkedList public class LinkedList  {       private ListNode firstNode;       private ListNode lastNode;          public LinkedList()        {  firstNode = lastNode = null;       }         public void insertAtFront(int insertItem)       { if ( isEmpty() )           firstNode = lastNode = new ListNode( insertItem ); else                  firstNode = new ListNode( insertItem, firstNode );       }      9 Cài đặt Linked List      public void insertAtBack( int insertItem )     {         if ( isEmpty() )            firstNode = lastNode = new ListNode( insertItem );         else             lastNode = lastNode.nextNode = new ListNode( insertItem );     }     public int removeFromFront()     {         int removeItem =  1;­         if ( ! isEmpty() ) {  removeItem = firstNode.data;    if ( firstNode == lastNode )      firstNode = lastNode = null;             else      firstNode = firstNode.nextNode;         }         return removeItem;       } 10 Cài đặt Linked List      public int removeFromBack()      { int removeItem =  1;­ if ( ! isEmpty() ) {            removeItem = lastNode.data;         if ( firstNode == lastNode ) firstNode = lastNode = null;       else       { ListNode current = firstNode; while ( current.nextNode != lastNode )        current = current.nextNode; lastNode = current; current.nextNode = null;       } } return removeItem;      } [...]... Các collection đầu tiên của Java: • Mảng • Vector: Mảng động • Hastable: Bảng băm • Collections Framework (từ Java 1.2)  • Là một kiến trúc hợp nhất để biểu diễn và thao  tác trên các collection • Giúp cho việc xử lý các collection độc lập với  biểu diễn chi tiết bên trong của chúng 33 Collections Framework • Một số lợi ích của Collections Framework • • • • Giảm thời gian lập trình Tăng cường hiệu năng chương trình Dễ mở rộng các collection mới... System.out.println ( "\n\nInorder traversal" ); tree.inorderTraversal(); System.out.println ( "\n\nPostorder traversal" ); tree.postorderTraversal(); 30 Bài tập tại lớp • Bài 1: Dùng Stack để viết chương trình in ra  dạng nhị phân của một số nguyên dương cho  trước • Bài 2: Cài đặt phương thức search trong lớp  Tree để tìm một phần tử có giá trị cho trước 31 Collection • Collection là đối tượng có khả năng chứa các ...       public void print() { stackList.print(); } } 18 Sử dụng Stack public class StackTest {       public static void main(String[] args)        { Stack stack = new Stack(); stack.push(5); stack.push(7); stack.push(4); stack.push (8) ; stack.print(); stack.pop(); stack.pop();       } } stack.print(); 19 Queue • Queue (Hàng đợi) là cấu trúc theo kiểu FIFO  (First In First Out), phần tử vào trước sẽ được lấy  ra trước • Hai thao tác bản trên hàng đợi... list.insertAtFront( 5 ); list.insertAtFront( 7 ); list.insertAtBack( 9 ); list.insertAtBack( 8 ); list.insertAtBack( 4 ); list.print();                 } }   list.removeFromFront(); list.removeFromBack(); list.print(); 16 Stack • Stack là một cấu trúc theo kiểu LIFO (Last In  First Out), phần tử vào sau cùng sẽ được lấy ra  trước • Hai thao tác bản trên Stack • Chèn phần tử: Luôn chèn vào đỉnh Stack (push) • Lấy ra phần tử: Luôn lấy ra từ đỉnh Stack (pop)...            if ( node == null )                          return;            System.out.print( node.data + " " );              preorder( node.leftNode );                 preorder( node.rightNode );           } 28 Cài đặt Binary Search Tree      private void inorder( TreeNode node )      {            if ( node == null )                      return;            inorder( node.leftNode );            System.out.print( node.data + " " );...       public void print() { queueList.print(); } } 21 Sử dụng Queue public class QueueTest {       public static void main(String[] args)        { Queue queue = new Queue(); queue.enqueue(5); queue.enqueue(7); queue.enqueue(4); queue.enqueue (8) ; queue.print();       } } queue.dequeue(); queue.dequeue(); queue.print(); 22 Tree • Tree là một cấu trúc phi tuyến (non­linear).  • Mỗi node trên cây có thể có nhiều liên kết tới node  khác Nút gốc... nút cha • Duyệt cây nhị phân • Inorder traversal • Preorder traversal • Postorder traversal 24 Binary Search Tree • Ví dụ về Binary Search Tree 47 Cây con trái Cây con phải 25 11 7 17 77 43 3144 65 93 68 25 Cài đặt Binary Search Tree public class TreeNode  {      int data;             TreeNode leftNode, rightNode;        public TreeNode( int nodeData )      {            data = nodeData;              ... Collections Framework • Một số lợi ích của Collections Framework • • • • Giảm thời gian lập trình Tăng cường hiệu năng chương trình Dễ mở rộng các collection mới Khuyến khích việc sử dụng lại mã chương trình 34 Collections Framework • Collections Framework bao gồm • Interfaces: Là các giao tiếp thể hiện tính chất  của các kiểu collection khác nhau như List, Set,  Map • Implementations: Là các lớp collection có sẵn  . 1 Lập trình Java cơ bản Cao Đức Thông   Trần Minh Tuấn­ cdthong@ifi.edu.vn, tmtuan@ifi.edu.vn  2 Bài 8.  Collections • Cấu trúc dữ liệu trong Java •. Bảng ánh xạ (Map) • Bài tập 3 Cấu trúc dữ liệu • Cấu trúc dữ liệu là cách tổ chức dữ liệu để giải  quyết vấn đề. • Một số cấu trúc dữ liệu phổ biến: • Mảng (Array)

Ngày đăng: 22/12/2013, 17:15

Hình ảnh liên quan

• Bảng ánh xạ (Map) - Tài liệu Lập trình Java cơ bản- Bài 8 (Collections) ppt

ng.

ánh xạ (Map) Xem tại trang 2 của tài liệu.
• Hastable: Bảng băm - Tài liệu Lập trình Java cơ bản- Bài 8 (Collections) ppt

astable.

 Bảng băm Xem tại trang 33 của tài liệu.
• HashSet: Bảng băm. - Tài liệu Lập trình Java cơ bản- Bài 8 (Collections) ppt

ash.

Set: Bảng băm Xem tại trang 48 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan