List và arraylist trong java

  -  

Trong bài này, chúng ta sẽ so sánh hiệu suất giữa hai kiểu dữ liệu List và ArrayList trong C#.

Lớp List

List dùng thể hiện một danh sách các đối tượng có kiểu mạnh và có thể được truy xuất theo chỉ mục (index). List chứa các phương thức như tìm kiếm, sắp xếp và xử lý danh sách. List có namespace là System.Collections.Generic và nằm trong thư viện mscorlib (in mscorlib.dll).

Bạn đang xem: List và arraylist trong java

Cú pháp

public class List : IList, ICollection, IEnumerable, IEnumerable, IList, ICollection, IReadOnlyList, IReadOnlyCollectionList kế thừa các interface như IList, ICollection và IEnumerable. Trong đó, người dùng thường dùng List theo kiểu List với T là dạng kiểu dữ liệu phần tử trong danh sách.

Ví dụ

Ví dụ tạo danh sách List gồm 3 phần tử, với mỗi phần tử kiểu string (chuỗi) và dùng vòng foreach để xuất ra màn hình.

List list1 = new List();list1.Add("a");list1.Add("backlinks.vn");list1.Add("b"); foreach (var item in list1){Console.WriteLine(item);}Console.ReadLine();/* Kết quảabacklinks.vnb*/

Lớp ArrayList

Lớp này kế thừa giao diện IList, sử dụng một mạng với kích thước tăng tự động. ArrayList thuộc namespace System.Collections và nằm trong thư viện mscorlib (ở mscorlib.dll).

Cú pháp

public class ArrayList : IList, ICollection, IEnumerable, ICloneableĐiểm đặc biệt là các phần tử trong ArrayList có thể là bất kể kiểu dữ liệu gì (object), không cần định nghĩa trước và cũng không cần các phần tử có cùng kiểu dữ liệu.

Ví dụ

Ví dụ tạo danh sách ArrayList với phần tử chuỗi và phần tử số; sau đó xuất danh sách ra màn hình.

Xem thêm: Top 10 Thương Hiệu Đồng Hồ Đẳng Cấp Nhất Thế Giới Chiếm Lĩnh Việt Nam


ArrayList arrayList1 = new ArrayList();arrayList1.Add("a");arrayList1.Add("backlinks.vn");arrayList1.Add(1);foreach (var item in arrayList1){Console.WriteLine(item);}Console.ReadLine();

So sánh List và ArrayList

*
*
List là lớp chung (generic class), hỗ trợ việc lưu trữ dữ liệu của dạng đặc biệt nào đó mà không cần chuyển đổi sang/từ đối tượng. Vì là một tập chung, List kế thừa giao diện chung IEnumerable và có thể sử dụng dễ dàng trong LINQ mà không cần gọi Cast hay OfType. Trong khi đó, ArrayList đơn giản chỉ lưu trữ tham chiếu của đối tượng. Do đó, khi sử dụng List, bạn có thể tránh được lỗi chuyển đổi dữ liệu trong thời gian thực thi (runtime casting error). Ngược lại, khi dùng ArrayList, lúc biên dịch thì không báo lỗi về chuyển đổi dữ liệu, nhưng khi thực thi mã nguồn thì sẽ dính lỗi này.

Bạn có thể xét 2 ví dụ sau để thấy rõ điều trên.

ArrayList array2 = new ArrayList();array2.Add(123);array2.Add("backlinks.vn"); // không có lỗi xảy raint total = 0;foreach (int num in array2){total += num; // lỗi xảy ra nếu thực hiện phép cộng với phần tử "backlinks.vn" trong lúc thực thi}Nếu bạn dùng List, bạn có thể tránh lỗi chuyển đổi dữ liệu lúc thực thi.

List list2 = new List();list2.Add(123);//list2.Add("backlinks.vn") //xảy ra lỗi ngay trong quá trình thêm dữ liệu, vì kiểu phần tử đã cố định là intint total = 0;foreach (int num in list2){total += num;}Tiếp theo, chúng ta hay so sánh hiệu suất tổng việc thực thi thêm và xóa phần tử với các danh sách từ 1 đến 100 phần tử. Điểm nhận xét thấy rõ, ArrayList có hiệu suất hơn hẳn List với danh sách từ 25 phần tử trở đi. Bạn có thể sử dụng đoạn mã so sánh như sau:

using System;using System.Collections.Generic;using System.Collections;using System.Diagnostics;using System.Linq;using System.Text;using System.Threading.Tasks;namespace LINQ{ class Program { static void Main(string<> args) { int times = 10000000; for (int listSize = 1; listSize list = new List(); ArrayList array = new ArrayList(); for (int i = 0; i Sau đây là dữ liệu kết quả đầu ra việc so sánh. Với số lượng phần tử càng lớn, thời gian thêm/xóa phần tử của ArrayList vẫn nhanh hơn so với List.

1 phan tu LIST, thoi gian thuc thi: 382ms1 phan tu ARRAY, thoi gian thuc thi: 469ms2 phan tu LIST, thoi gian thuc thi: 442ms2 phan tu ARRAY, thoi gian thuc thi: 552ms3 phan tu LIST, thoi gian thuc thi: 515ms3 phan tu ARRAY, thoi gian thuc thi: 631ms4 phan tu LIST, thoi gian thuc thi: 583ms4 phan tu ARRAY, thoi gian thuc thi: 713ms5 phan tu LIST, thoi gian thuc thi: 657ms5 phan tu ARRAY, thoi gian thuc thi: 789ms6 phan tu LIST, thoi gian thuc thi: 737ms6 phan tu ARRAY, thoi gian thuc thi: 863ms7 phan tu LIST, thoi gian thuc thi: 812ms7 phan tu ARRAY, thoi gian thuc thi: 933ms8 phan tu LIST, thoi gian thuc thi: 886ms8 phan tu ARRAY, thoi gian thuc thi: 1010ms9 phan tu LIST, thoi gian thuc thi: 1078ms9 phan tu ARRAY, thoi gian thuc thi: 1082ms10 phan tu LIST, thoi gian thuc thi: 1180ms10 phan tu ARRAY, thoi gian thuc thi: 1275ms11 phan tu LIST, thoi gian thuc thi: 1187ms11 phan tu ARRAY, thoi gian thuc thi: 1338ms12 phan tu LIST, thoi gian thuc thi: 1217ms12 phan tu ARRAY, thoi gian thuc thi: 1372ms13 phan tu LIST, thoi gian thuc thi: 1256ms13 phan tu ARRAY, thoi gian thuc thi: 1414ms14 phan tu LIST, thoi gian thuc thi: 1319ms14 phan tu ARRAY, thoi gian thuc thi: 1435ms15 phan tu LIST, thoi gian thuc thi: 1334ms15 phan tu ARRAY, thoi gian thuc thi: 1450ms16 phan tu LIST, thoi gian thuc thi: 1373ms16 phan tu ARRAY, thoi gian thuc thi: 1466ms17 phan tu LIST, thoi gian thuc thi: 1416ms17 phan tu ARRAY, thoi gian thuc thi: 1497ms18 phan tu LIST, thoi gian thuc thi: 1446ms18 phan tu ARRAY, thoi gian thuc thi: 1525ms19 phan tu LIST, thoi gian thuc thi: 1483ms19 phan tu ARRAY, thoi gian thuc thi: 1547ms20 phan tu LIST, thoi gian thuc thi: 1520ms20 phan tu ARRAY, thoi gian thuc thi: 1582ms21 phan tu LIST, thoi gian thuc thi: 1552ms21 phan tu ARRAY, thoi gian thuc thi: 1605ms22 phan tu LIST, thoi gian thuc thi: 1629ms22 phan tu ARRAY, thoi gian thuc thi: 1676ms23 phan tu LIST, thoi gian thuc thi: 1702ms23 phan tu ARRAY, thoi gian thuc thi: 1719ms24 phan tu LIST, thoi gian thuc thi: 1687ms24 phan tu ARRAY, thoi gian thuc thi: 1686ms25 phan tu LIST, thoi gian thuc thi: 1705ms25 phan tu ARRAY, thoi gian thuc thi: 1702ms26 phan tu LIST, thoi gian thuc thi: 1743ms26 phan tu ARRAY, thoi gian thuc thi: 1781ms27 phan tu LIST, thoi gian thuc thi: 1845ms27 phan tu ARRAY, thoi gian thuc thi: 1863ms28 phan tu LIST, thoi gian thuc thi: 1915ms28 phan tu ARRAY, thoi gian thuc thi: 1808ms29 phan tu LIST, thoi gian thuc thi: 1942ms29 phan tu ARRAY, thoi gian thuc thi: 1821ms30 phan tu LIST, thoi gian thuc thi: 2002ms30 phan tu ARRAY, thoi gian thuc thi: 1838ms31 phan tu LIST, thoi gian thuc thi: 2021ms31 phan tu ARRAY, thoi gian thuc thi: 1872ms32 phan tu LIST, thoi gian thuc thi: 2073ms32 phan tu ARRAY, thoi gian thuc thi: 1897ms33 phan tu LIST, thoi gian thuc thi: 2076ms33 phan tu ARRAY, thoi gian thuc thi: 1925ms34 phan tu LIST, thoi gian thuc thi: 2120ms34 phan tu ARRAY, thoi gian thuc thi: 2266ms35 phan tu LIST, thoi gian thuc thi: 2222ms35 phan tu ARRAY, thoi gian thuc thi: 2091ms36 phan tu LIST, thoi gian thuc thi: 2192ms36 phan tu ARRAY, thoi gian thuc thi: 2107ms37 phan tu LIST, thoi gian thuc thi: 2261ms37 phan tu ARRAY, thoi gian thuc thi: 2303ms38 phan tu LIST, thoi gian thuc thi: 2420ms38 phan tu ARRAY, thoi gian thuc thi: 2244ms39 phan tu LIST, thoi gian thuc thi: 2485ms39 phan tu ARRAY, thoi gian thuc thi: 2456ms40 phan tu LIST, thoi gian thuc thi: 2559ms40 phan tu ARRAY, thoi gian thuc thi: 2339ms41 phan tu LIST, thoi gian thuc thi: 2528ms41 phan tu ARRAY, thoi gian thuc thi: 2245ms42 phan tu LIST, thoi gian thuc thi: 2505ms42 phan tu ARRAY, thoi gian thuc thi: 2283ms43 phan tu LIST, thoi gian thuc thi: 2521ms43 phan tu ARRAY, thoi gian thuc thi: 2350ms44 phan tu LIST, thoi gian thuc thi: 2558ms44 phan tu ARRAY, thoi gian thuc thi: 2313ms45 phan tu LIST, thoi gian thuc thi: 2601ms45 phan tu ARRAY, thoi gian thuc thi: 2357ms46 phan tu LIST, thoi gian thuc thi: 2565ms46 phan tu ARRAY, thoi gian thuc thi: 2417ms47 phan tu LIST, thoi gian thuc thi: 2627ms47 phan tu ARRAY, thoi gian thuc thi: 2448ms48 phan tu LIST, thoi gian thuc thi: 2679ms48 phan tu ARRAY, thoi gian thuc thi: 2520ms49 phan tu LIST, thoi gian thuc thi: 2752ms49 phan tu ARRAY, thoi gian thuc thi: 2455ms50 phan tu LIST, thoi gian thuc thi: 2731ms50 phan tu ARRAY, thoi gian thuc thi: 2488ms51 phan tu LIST, thoi gian thuc thi: 2802ms51 phan tu ARRAY, thoi gian thuc thi: 2500ms52 phan tu LIST, thoi gian thuc thi: 2818ms52 phan tu ARRAY, thoi gian thuc thi: 2591ms53 phan tu LIST, thoi gian thuc thi: 2898ms53 phan tu ARRAY, thoi gian thuc thi: 2534ms54 phan tu LIST, thoi gian thuc thi: 2856ms54 phan tu ARRAY, thoi gian thuc thi: 2550ms55 phan tu LIST, thoi gian thuc thi: 2893ms55 phan tu ARRAY, thoi gian thuc thi: 2569ms56 phan tu LIST, thoi gian thuc thi: 2920ms56 phan tu ARRAY, thoi gian thuc thi: 2595ms57 phan tu LIST, thoi gian thuc thi: 3026ms57 phan tu ARRAY, thoi gian thuc thi: 2768ms58 phan tu LIST, thoi gian thuc thi: 3152ms58 phan tu ARRAY, thoi gian thuc thi: 2725ms59 phan tu LIST, thoi gian thuc thi: 3118ms59 phan tu ARRAY, thoi gian thuc thi: 2702ms...

Xem thêm: Tìm Hiểu Thuật Ngữ Git Là Gì Trong Du Lịch Là Gì? Và Những Điều Cần Biết

Kết luận

Theo các ví dụ so sánh trong bài, có thể thấy, bạn nên dùng ArrayList nếu bạn muốn xử lý danh sách có lượng lớn phần tử, List chỉ xử lý tốt với danh sách nhỏ. Tuy nhiên, thời gian xử lý khác biệt giữa List và ArrayList vẫn không lớn đối với trực quan của người dùng, do đó nếu không có áp lực về tối ưu hóa thời gian thì bạn dùng List vẫn được.