Xử lý dữ liệu trong PHP – vấn đề muôn thuở

Trong PHP nói đến việc truy xuất và xử lý dữ liệu người ta nghĩ ngay đến Arraylist và Linkedlist

Mỗi cái đều có ưu nhược điểm riêng, do đó chúng ta cần phải tùy biến trong các trường hợp.

Nói chung về Arraylist thì các dữ liệu được lưu thành dạng mảng và mỗi phần tử của mảng được lưu vào các ô. Kích thước của nó được tùy biến dựa theo số lượng các phần tử. Đặc điểm của cấu trúc dữ liệu ArrayList đó là hỗ trợ việc truy xuất nhanh đến các phần tử, nhờ việc hỗ trợ cơ chế truy xuất ngẫu nhiên của mảng, nhưng nhược điểm của nó là các thao tác như xóa, thêm, bớt các phần tử lại khá chậm vì nó bắt buộc phải duyệt lần lượt từng phần tử (các phần tử được lưu vào một ô nên nếu thêm, bớt các ô sẽ luân chuyển lần lượt đến khi một ô mới được thêm vào hay bớt đi). Các dữ liệu được lưu vào một ô nên chỉ cần tham chiếu đến ô tương ứng là chúng ta lấy dữ liệu ra rất nhanh

Ngược lại, thì việc lưu các dưới dạng Linhkedlist thì việc truy xuất các dữ liệu lại khá chậm nhưng các thao tác xử lý dữ liệu như thêm hoặc bớt lại khá nhanh .Lý do là vì LinkedList hoạt động dựa trên cơ chế liên kết giữa các Node. Mỗi node chứa dữ liệu của node đó và liên kết đến node kế tiếp nó.

Ví dụ bên trong Node 1 có chứa phần tử element 1 và tham chiếu đến Node 2. Bây giờ ta muốn thêm một Node 3 vào giữa Node 1 và Node 2 thì chúng ta chỉ việc cho phần tử element1 tham chiếu đến Node 3, và vì mỗi node chứa dữ liệu liên kết đến node kế tiếp nó nên phần tử element 3 sẽ tham chiếu đến Node2. Như vậy ta đã thêm được Node3 một cách khá nhanh chóng. Nhưng việc truy xuất nó thì ta lại phải duyệt từng Node chúng ta mới lấy dữ liệu được trong nó do đó việc truy xuất dữ liệu khó khăn hơn rất nhiều so với truy xuất trong mảng

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar

Facebook