Upload
trung-nguyen-quang
View
3.366
Download
1
Embed Size (px)
DESCRIPTION
container in depth
Citation preview
Báo cáo lý thuyết Java
đề tài :container in Depth
Nhóm 17:Nguyễn Quang TrungĐinh Thị Thu Trang Nguyễn Thị Trâm
Tóm Tắt Nội dung chính
• Mở đầu
• Tại sao phải cần bộ chứa ?
• Giới thiệu các giải pháp về bộ chứa trong java
• ứng dụng của bộ chứa trong thực tế
• Kết luận
Mở đầuNgày nay trên thế giới có rất nhiều ngôn ngữ lập trình đang được sử dụng. Mỗi một ngôn ngữ lại có những điểm mạnh riêng biệt. Một trong những ngôn ngữ đang được sử dụng rất rộng rãi hiện nay chính là java . Vậy tại sao trong một rừng các loại ngôn ngữ lập trình như VB,C# v..v thì java lại có một chỗ đứng trong giới lập trình như vậy.
Có rất nhiều lí do đc đưa ra đó là
Java là một ngôn ngữ mạnh mẽ
Bảo mật tốt
Dễ dùng v.v
Ngày hôm nay chúng ta đề cập đến một trong những khía cạnh đó. Đó là chính là bộ chứa(container) trong java
Vậy bộ chứa là gì
Như chúng ta đã biết trong quá trình lập trình thì chúng ta thường xuyên phải làm việc với một tập hợp các đối tượng. Trong lập trình C và C++ hẳn nhiều người đã quen với khái niệm mảng(Array). Và con trỏ ( pointer)
Lợi ích của mảng
Dễ hiểu, dễ dùng,thuận tiện
Cho các bài toán đơn giản
Nhưng một vấn đề đặt đáng quan
Tâm khi sử dụng mảng hay con trỏ là
việc khi tạo một danh sách đối tượng
Thì số lượng đối tượng có thể đưa
vào mảng sẽ bị giới hạn và không có tính mềm dẻo
Không những thế một loạt yêu cầu đặt ra với danh sách các đối tượng này như yêu cầu về tìm kiếm, cập nhật đối tượng
Bộ chứa để làm gì
Để giải quyết
Các mô hình bộ chứa trong java
Các mô hình bộ chứa thông dụng trong java
•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)
Không giống như ngôn ngữ C, C++ , Java không tồn tại khái niệm con trỏ
Linked list(danh sách liên kết)
• 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ự.
Mô tả danh sách liên kết :
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 ...}
Một nút được tạo ra và xác định nút nằm sau nó, nếu nút là nút cuối cùng của danh sách thì nút đằng sau nó sẽ có giá trị là null;
Cài đặt linked ListChúng ta sẽ ví dụ vời cái đặt danh sách liên kết đơn: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; }}
stackStack la
Hàng đợi (queue)
-Khác với Stack, Queue là một kiểu dữ liệu trừu tượng mà cơ chế cập nhật và truy xuất xảy ra ở hai đầu khác nhau và theo quy tắc vào trước ra trước (First In − First Out ).Viết tắt là FIFO
- - Queue là một kiểu danh sách tuyến tính đặc biệt mà phép thêm vào chỉ được thực hiện ở đầu danh sách( gọi là cuối hàng rear), còn phép loại bỏ thì được thực hiện ở đầu kia (gọi là đầu hàng front
-Ví dụ: Queue giống như một hàng đợi mua vé xem phim : người mua xếp hàng trước sẽ được mua vé trước còn người mua vé xếp hàng sau thì mua vé sau
stackStack la
Kết luận