So sánh ArrayList và HashMap

Khác nhau giữa Array và ArrayList và HashMap

tháng 7 31, 2017
  • Collection bản chất tập các lớp dùng để lưu trữ danh sách khả năng tự co giãn khi danh sách thay đổi: Thêm , sửa, xóa, chèn
  • Hai lớp Collection thường được sử dụng nhiều nhất ArrayList Hashmap
Giới thiệu về ArrayList
  • ArrayList sử dụng cấu trúc mảng để lưu trữ phần tử, tuy nhiên hai đặc điểm khác mảng:
  • Không cần khai báo trước kiểu phần tử.
  • Không cần xác định trước số lượng phần tử (kích thước mảng).
  • Nó khnăng truy cp phn tngu nhiên (Do tha kế tinterface RandomAccess).
Phương thức khởi tạo
  • ArrayList()
  • ArrayList(Collection c)
  • ArrayList(int initialCapactity)
Các phương thức chính
  • add(Object o)
  • remove(Object o)
  • get(int index)
  • size()
  • isEmpty()
  • contains(Object o)
  • clear()
Giới thiệu về HashMap
  • kiu tp hp từ đin, HashMap cho phép truy xut trc tiếp ti mt đối tượng bng khoá duy nht ca . Chai khoá đối tượng thể thuộc bất cứ kiểu nào.
qphương thức khởi tạo
  • HashMap()
  • HashMap(Collection c)
  • HashMap(int capacity)
qCác phương thức chính
  • put(Object key, Object value)
  • get(Object key)
  • remove(Object key)
  • containsKey(Object key)
  • containsValue(Object value)
  • size()
  • isEmpty
Array:
Mảng một loại biến đặc biệt, bao gồm một dãy các ô nhớ nhiều ô nhớ con cho phép biểu diễn thông tin dạng danh sách trong thực tế
  • Các phần tử trong mảng cùng kiểu dữ liệu với nhau
  • Lợi ích của việc sử dụng mảng
  • Mảng cách tốt nhất cho phép quản nhiều phần tử dữ liệu cùng kiểu tại cùng một thời điểm
  • Mảng tạo ra sự tối ưu trong việc quản bộ nhớ so với việc sử dụng nhiều biến cho cùng một chức năng
  • Bộ nhớ thể được gán cho mảng chỉ khi mảng thực sự được sử dụng. Do đó, bộ nhớ không bị tiêu tốn cho mảng ngay khi bạn khai báo mảng.
Khai báo khởi tạo
  • Khai báo không khởi tạo kích thước giá trị
  • KiểudDữLiệu[] TênMảng;
  • KiểuDữLiệu TênMảng[];
  • § dụ: int[] a; int a[];


// import java.util.Arrays;
  • int array[] = { 2, 5, -2, 6, -3, 8, 0, 7, -9, 4 };
  • int array1[] = { 2, 5, 6, -3, 8};
  • // Sắp xếp mảng số nguyên
  • Arrays.sort(array);
  • // So sánh hai mảng số nguyên array1 array
  • array1.equals(array);
  • // Gán giá trị cho các phần tử trong mảng array1
  • Arrays.fill(array1, 10); // 10, 10, 10, 10, 10
  • // Sao chép mảng array1 sang array2
  • int[] arr2 = Arrays.copyOf(arr1, 6); // 10 10 10 10 10 0


hạn chế mảng:
Mảng có kích cỡ và số chiều cố định nên khó khăn trong việc mở rộng ứng dụng.
  • Các phần tử được đặt và tham chiếu một cách liên tiếp nhau trong bộ nhớ nên khó khăn cho việc xóa một phần tử ra khỏi mảng.

Khác nhau giữa Array và ArrayList


Sự khác biệt giữa Array và ArrayList là câu hỏi phổ biến cho người mới bắt đầu đặc biệt là những người bắt đầu với code trong C và C++ và thích sử dụng Array. Cả hai Array và ArrayList được sử dụng để lưu trữ các phần tử hoặc đối tượng. Chính sự khác biệt giữa Array và ArrayList trong Java là tính chất tĩnh của Array và tính chất động của ArrayList. Sau khi tạo ra bạn không thể thay đổi kích thước của Array nhưng ArrayList có thể đặt lại kích thước chính nó khi cần thiết. Một khác biệt đáng chú ý giữa ArrayList và Array, Array là một phần lõi lập trình Java và có cú pháp và ngữ nghĩa đặc biệt hỗ trợ Java, ArrayList là một phần của Collection framework cùng với các lớp phổ biến khác như Vector, Hashtable, HashMap hoặc LinkedList.

Array và ArrayList trong Java

Đầu tiên sự khác biệt chính giữa Array và ArrayList trong Java, Array là cấu trúc dữ liệu chiều dài cố định trong khi ArrayList là biến chiều dài lớp Collestion. Bạn không thể thay đổi chiều dài của Array được tạo ra trong Java nhưng ArrayList định lại kích thước chính nó tùy thuộc vào năng lực và hệ số tải. Từ ArrayList là nội bộ được hỗ trợ bởi mảng trong Java, bất kỳ hoạt động thay đổi kích thước trong ArrayList sẽ làm chậm hiệu suất vì nó liên quan đến việc tạo ra mảng mới và sao chép nội dung từ mảng cũ sang mảng mới.

2) Một sự khác biệt giữa Array và ArrayList trong Java là không thể sử dụng Generics cùng với Array, như ví dụ mảng về các loại kiểu của nó có thể giữ và ném ArrayStoreException, nếu bạn cố gắng để lưu trữ kiểu đó là không thể chuyển thành kiểu Array. ArrayList cho phép sử dụng Generics để đảm bảo kiểu an toàn.

3) Tất cả các kiểu mảng cung cấp chiều dài biến biểu thị chiều dài của mảng ArrayList trong khi cung cấp phương thức size() để tính toán kích thước của ArrayList trong Java.

4) Một trong nhiều sự khác biệt lớn giữa ArrayList và Array là bạn không thể lưu trữ nguyên thủy trong ArrayList, nó chỉ có thể chứa các đối tượng. Trong khi mảng có thể chứa cả nguyên thủy và đối tượng trong Java. Mặc dù autoboxing của Java có thể cung cấp lưu trữ nguyên thủy trong ArrayList, nó thực sự tự động chuyển đổi nguyên thủy đến đối tượng.

Ví dụ:
ArrayList integerList = new ArrayList();
integerList.add(1); //here we are not storing primitive in ArrayList, instead autoboxing will convert int primitive to Integer object

5) Java cung cấp phương thức add() để chèn phần tử vào ArrayList và bạn chỉ có thể sử dụng toán tử gán để lưu trữ phần tử vào mảng

Ví dụ: Để lưu trữ đối tượng đến vị trí cụ thể sử dụng

Object[] objArray = new Object[10];
objArray[1] = new Object();

6) Một sự khác biệt thêm về Array vs ArrayList là có thể tạo ra instance của ArrayList mà không xác định kích thước, Java sẽ tạo ArrayList với kích thước mặc định nhưng bắt buộc cung cấp kích thước của mảng trong khi tạo ra cách trực tiếp hoặc gián tiếp bằng cách khởi tạo mảng khi tạo ra nó. Bằng cách này bạn cũng có thể khởi tạo ArrayList.

Đó là tất cả về sự khác biệt giữa mảng và ArrayList trong Java. Xét về hiệu suất Array và ArrayList cung cấp hiệu suất tương tự về thời gian liên tục để thêm hoặc nhận được yếu tố nếu biết chỉ số. Mặc dù tự động thay đổi kích thước của ArrayList có thể làm chậm chèn một chút

Chia sẻ

Nhãn

Java
Nhãn: Java
Chia sẻ

Entry Test của FPT

tháng 4 04, 2017
IQ - Kiểm tra tư duy logic (8/20) - GMAT- Kiểm tra khả năng tính toán trong thời gian ngắn (8/20) - Tiếng Anh (18-> 25/50) - Các bài thi chuyên môn - FE (8/20) IQ: lên mạng tìm "IQ test" là ra đầy. + GMAT: Những câu trắc nghiệm tính toán đơn giản kiểu như sau: 1 . Một shop thời trang sale off quần jeans 15 %, quần jeans giá 450 $, người mua đưa 500 $, hỏi cashier trả lại bao nhiêu $ tiền thừa.? 2 . 100 % là 180 , vậy 150 là bao nhiêu %? Tiếng anh: Cỡ như thi TOEIC thôi. Chuyên môn: Mobile thì trắc nghiệm Java. Qúa trình tuyển như sau :v Lần 1: Test IQ, Tiếng Anh( mình làm í ẹ khoảng 50% mà vẫn được) , Java Lân 2: được gọi điện lên :)) + Gioi thiệu bản thân + Họ chỉ hỏi các câu căn bản như: -. OOP: là gì, 4 tính chất, ví dụ, khác nhau giữa interface và abstract - CODE: hầu toàn các bài toán vòng for :)) , cẩn thận mấy câu kế thừa. SQL (distinct, view, function, cursor, store procedure, ...v.v.), nhớ có câu cộng 2 số int không dùng biến đệm hơi khoai haha + Nói ch
Chia sẻ
1 nhận xét
Đọc thêm

phỏng vấn Embedded C và C++?

tháng 4 04, 2017
Có vài điểm rất nhỏ, các bạn không để ý có thể dẫn đến bất lợi (nếu không muốn nói là rớt) ở vòng hồ sơ hoặc khi đi phỏng vấn. Mình liệt kê rất cụ thể ra những chuyện mình đã thấy qua nhiều lần (người thật, việc thật), hy vọng cho các bạn thêm kinh nghiệm. Lưu ý: Những chuyện này rất chủ quan, có thể chỉ đúng trong môi trường của mình và hoàn toàn không đúng trong môi trường khác. Gửi email CV đến không có Cover Letter, chỉ đính kèm mỗi file PDF là cái CV. CV ghi : tiếng Anh: Trung Bình, C: Trung Bình,... nhưng bên dưới lại ghi ưu điểm_: là người ham học hỏi... CV bằng tiếng Việt và lại viết sai chính tả tiếng Việt. CV ghi quá nhiều về các hoạt động tình nguyện, hiến máu, blah blah... nhưng phần kĩ thuật lại có 3 dòng thôi. Mặc đồ thể dục của trường và đi dép lê đến PV. Đến muộn PV (em ấy bảo bị kẹt xe). Đưa yêu cầu, em ấy không hiểu đề nhưng ngại không dám hỏi lại, dẫn đến viết hoàn toàn sai. Hỏi ngay câu căn bản đầu tiên em ấy đã nói không biết và đổ do trường không dạy
Chia sẻ
Đăng nhận xét
Đọc thêm

Java: Java Package-Thư viện trong Java

tháng 3 29, 2017
Giới thiệu về Package Các bạn mới học lập trình Java thường không dể ý tới package vì các bạn toàn tạo file .java vào cùng 1 chỗ, không cần sắp xếp, không cần quản lý truy nhập. Nhưng để tăng kỹ năng lập trình với Java, các bạn cần phải tìm hiểu về package trong Java. Các bạn có thể tham khảo định nghĩa sau: Package được dùng để đóng gói các lớp trong chương trình lại với nhau thành một khối. Đây là cách tốt nhất để lưu trữ các lớp gần giống nhau hoặc có cùng một module thành một khối thống nhất để đáp ứng 1 khối chức năng. Từ đây mình sẽ giới thiệu thêm với các bạn các câu lệnh nhâp khẩu,nó có định dạng như sau : Định dạng : import javaPackageNameImport; Nó giống như khai báo thư viện ở các ngôn ngữ lập trình khác.Như vậy,chỉ khi các bạn nhập khẩu chúng,các bạn mới có thể sử dụng thư viện mà chúng cung cấp cho ta. VD : import java.util.Date; import java.text.SimpleDateFormat; Lưu ý : -Các câu lệnh nhập khẩu rất nhiều và đa dạng.Chúng ta tiếp cận nh
Chia sẻ
Đăng nhận xét
Đọc thêm