ArrayList trong Java

Lượt xem

1996Câu hỏi phỏng vấn phong cách thiết kế mạng lưới hệ thống hoàn toàn có thể quá mở, đến nỗi quá khó để biết cách chuẩn bị sẵn sàng tương thích. Bây giờ tôi hoàn toàn có thể bẻ khóa những vòng phong cách thiết kế của Amazon, Microsoft và Adobe sau khi mua cuốn sách này. Sửa đổi hàng ngày một câu hỏi phong cách thiết kế và tôi hứa bạn hoàn toàn có thể bẻ khóa phong cách thiết kế .

LinkedIn

Bạn đang đọc: ArrayList trong Java

Đệm

Reddit

Tumblr

7CỔ PHẦN

ArrayList trong JavaPin

ArrayList trong Java là cấu trúc tài liệu được sử dụng phổ cập nhất để tạo một mảng size động. Nó lan rộng ra lớp Abstract và tiến hành Danh sách Java giao diện. Sự độc lạ chính giữa mảng và ArrayList là mảng là tĩnh ( tất cả chúng ta không hề thêm hoặc bớt những thành phần ) trong khi ArrayList là động ( tất cả chúng ta hoàn toàn có thể thêm, bớt hoặc sửa đổi những thành phần ). Trong bài này, tất cả chúng ta sẽ xem ArrayList là gì và cách khởi tạo ArrayList trong Java như thế nào ?Bạn cũng hoàn toàn có thể chăm sóc ArrayList so với LinkedList

Java ArrayList Hierarchy

Pin

Khai báo một lớp ArrayList trong Java

Để sử dụng ArrayList trong Java, chúng ta phải nhập java.util.ArrayList. Dưới đây là phần khai báo của ArrayList

lớp công khai ArrayList mở rộng danh sách AbstractList danh sách triển khai, RandomAccess, Cloneable, Serializable

trong đó E biểu thị phần tử hoặc kiểu đối tượng người dùng ( Ví dụ : Số nguyên, Chuỗi, v.v. )Lớp ArrayList lan rộng ra lớp AbstractList và tiến hành giao diện Danh sách .

ArrayList Constructors

Chúng ta hoàn toàn có thể tạo ArrayList trong Trình tạo Java trong 3 chiêu thức dưới đây :

xây dựng Mô tả
Lập danh sách() Điều này tạo ra một danh sách mảng trống
ArrayList (Bộ sưu tập c) Điều này tạo ra một danh sách mảng với các phần tử của bộ sưu tập
ArrayList (kích thước int) Điều này tạo ra một danh sách mảng có kích thước cụ thể

Các tính năng của Java ArrayList

  • Nó là một mảng động có thể thay đổi kích thước, nơi chúng ta có thể thêm, sửa đổi hoặc loại bỏ các yếu tố bất kỳ lúc nào từ danh sách
  • Duy trì một thứ tự tuần tự.
  • Nó rất dễ dàng để truy cập bất kỳ dữ liệu nào từ danh sách dựa trên chỉ mục.
  • Cho phép bản sao các yếu tố trong danh sách

Các phương thức Java ArrayList

Ngoài những phương pháp dưới đây, ArrayList trong Java có truy vấn cho toàn bộ những phương pháp của giao diện Danh sách .

Phương pháp Mô tả Tham số
Boolean thêm (Đối tượng e) Thêm phần tử được chỉ định vào cuối danh sách. e – phần tử được thêm vào.
Giá trị trả về – Đúng
void add (int index, Object e) Thêm phần tử vào chỉ mục được chỉ định. Nếu chỉ mục đã chứa một phần tử, nó sẽ được chuyển sang bên phải index- chỉ mục mà tại đó phần tử cần được chèn vào
e – phần tử cần được chèn
Boolean addAll (Bộ sưu tập c) Thêm một tập hợp các phần tử được chỉ định vào danh sách. c – tập hợp các phần tử được thêm vào
Giá trị trả về – đúng
Boolean addAll (int index, Collection c) Thêm một tập hợp các phần tử tại chỉ mục được chỉ định. Nếu chỉ mục đã chứa phần tử, sau đó nó sẽ được chuyển sang bên phải index – chỉ mục mà tại đó các phần tử cần được thêm vào
c – tập hợp các phần tử được thêm vào
Giá trị trả về – Đúng
void clear () Xóa tất cả các phần tử trong danh sách.
Boolean chứa (Đối tượng o) Kiểm tra xem danh sách có chứa phần tử được chỉ định hay không Giá trị trả về – true nếu danh sách chứa phần tử
Boolean chứaAll (Bộ sưu tập c) Kiểm tra xem danh sách có chứa tất cả các phần tử trong bộ sưu tập hay không Giá trị trả về – true nếu danh sách chứa tất cả các phần tử
Boolean bằng (Đối tượng o) So sánh nếu danh sách chứa tất cả các phần tử được chỉ định theo thứ tự chính xác Giá trị trả về – true nếu các phần tử đối tượng khớp với danh sách
Đối tượng getIndex (int index) Truy xuất phần tử ở chỉ mục được chỉ định index – chỉ mục mà tại đó phần tử cần được truy xuất
Giá trị trả về – Phần tử ở chỉ mục được chỉ định
int indexOf (Đối tượng o) Tìm nạp chỉ mục của lần xuất hiện đầu tiên của phần tử được chỉ định o – Yếu tố được xác định
Giá trị trả về – giá trị chỉ mục
Boolean isEmpty () Kiểm tra xem danh sách có trống hay không Giá trị trả về – đúng nếu danh sách không chứa giá trị
Trình lặp lặp lại lặp lại () Truy xuất trình lặp của danh sách theo trình tự Giá trị trả về – Trình lặp lại
int lastIndexOf (Đối tượng o) Truy xuất lần xuất hiện cuối cùng của đối tượng được chỉ định o – Yếu tố cần xác định
Giá trị trả về – giá trị chỉ mục
Loại bỏ đối tượng (int index) Loại bỏ phần tử tại chỉ mục được chỉ định index – vị trí chỉ mục mà tại đó phần tử phải được xóa
Giá trị trả về – Phần tử bị xóa
Boolean remove (Đối tượng o) Loại bỏ sự xuất hiện đầu tiên của đối tượng được chỉ định khỏi danh sách nếu có o – Phần tử cần được loại bỏ
Giá trị trả về – true nếu danh sách chứa phần tử
Boolean removeAll (Bộ sưu tập c) Loại bỏ sự xuất hiện đầu tiên của tất cả các phần tử trong bộ sưu tập khỏi danh sách nếu có c – tập hợp các phần tử
Giá trị trả về – true nếu danh sách chứa bộ sưu tập
Boolean keepAll (Bộ sưu tập c) Giữ lại tất cả các phần tử được chỉ định trong bộ sưu tập trong danh sách. Các phần tử khác sẽ bị xóa c – tập hợp các phần tử phải được giữ lại
Giá trị trả về – true nếu danh sách thay đổi do phương thức được gọi
Tập đối tượng (int index, Object o) Thay thế phần tử tại chỉ mục được chỉ định bằng đối tượng được truyền o – phần tử được thay thế
index – chỉ mục của phần tử
Giá trị trả về – Trả về phần tử trước đó ở chỉ mục được chỉ định
int size () Tìm nạp kích thước của danh sách Giá trị trả về – kích thước của danh sách
Liệt kê danh sách con (int fromIndex, int toIndex) Truy xuất một phần của danh sách dựa trên start và endIndex fromIndex – vị trí mà từ đó danh sách con phải được truy xuất (bao gồm)
toIndex – chỉ mục cho đến khi danh sách con phải được truy xuất (loại trừ)
void ensureCapacity (int mincapacity) Tăng kích thước của danh sách mảng và đảm bảo nó có thể chứa dung lượng tối thiểu như đã đề cập mincapacity – số phần tử tối thiểu mà danh sách mảng có thể giữ
void sort (Bộ so sánh c) Sắp xếp các phần tử trong danh sách dựa trên đối số so sánh c – compartor được sử dụng để so sánh các phần tử danh sách
Đối tượng [] toArray () Trả về một mảng các phần tử theo trình tự thích hợp Giá trị trả về – Mảng của tất cả các phần tử trong danh sách theo trình tự thích hợp
Chuỗi toString () Trả về biểu diễn chuỗi của tập hợp các phần tử mảng Giá trị trả về – Chuỗi các phần tử mảng được phân tách bằng dấu phẩy và dấu cách và được đặt trong []
void trimToSize () Cắt kích thước của cá thể ArrayList thành kích thước danh sách hiện tại

Khai báo chung và không chung chung của Java ArrayList

Trước JDK 1.5, Khung Bộ sưu tập Java chung chung như được diễn đạt dưới đây .

ArrayList al = new ArrayList (); -> Danh sách có thể chứa bất kỳ loại phần tử nào

Sau JDK 1.5, nó tương hỗ không chung chung hoàn toàn có thể được sử dụng như bên dưới. Chúng ta hoàn toàn có thể chỉ định loại thành phần trong < > .

Lập danh sách al = new ArrayList (); -> Danh sách chỉ có thể chứa các giá trị Chuỗi

Lập danh sách al = new ArrayList (); -> Danh sách chỉ có thể chứa giá trị Số nguyên

Java ArrayList Exceptions

ArrayList in Java ném những trường hợp ngoại lệ dưới đây :

  • UnsupportedOperationException – khi hoạt động không được hỗ trợ
  • IndexOutofBoundsException – khi chỉ mục không hợp lệ được chỉ định (fromIndex <0 hoặc fromIndex> toIndex hoặc toIndex> size)
  • ClassCastException – khi lớp của phần tử được chỉ định ngăn cản việc thêm nó vào danh sách
  • NullPointerException – khi phần tử được chỉ định là null và danh sách không cho phép thêm phần tử null
  • IllegalArgumentException – khi một số thuộc tính của phần tử ngăn cản việc thêm vào danh sách

Nhập ArrayList trong Java

Trước khi mở màn sử dụng lớp ArrayList, tất cả chúng ta cần nhập gói có tương quan để sử dụng nó. Đối với điều này, chúng tôi nhập gói bên dưới để sử dụng ArrayList .

import java.util.ArrayList;

Khai báo ArrayList trong Java

Chúng ta hoàn toàn có thể khai báo ArrayList trong Java bằng cách tạo biến của kiểu ArrayList. Chúng ta cũng hoàn toàn có thể chỉ định kiểu list là Chuỗi hoặc Số nguyên, v.v … Dưới đây là ví dụ về việc khai báo Danh sách Mảng của kiểu Chuỗi và Số nguyên .

ArrayList colors;
ArrayList weight;

Tạo ArrayList trong Java

Khi tất cả chúng ta khai báo một ArrayList, tất cả chúng ta hoàn toàn có thể tạo nó bằng cách gọi phương pháp khởi tạo để khởi tạo một đối tượng người tiêu dùng và gán nó cho biến. Chúng ta hoàn toàn có thể sử dụng bất kể hàm tạo nào như đã tranh luận ở trên. Chúng ta cũng hoàn toàn có thể khai báo và tạo ArrayList trong một câu lệnh như bên dưới .

ArrayList colors = new ArrayList();

( HOẶC LÀ )

ArrayList colors; //declare an ArrayList
colors = new ArrayList(); //create an ArrayList

Làm thế nào để khởi tạo ArrayList trong Java?

Khi tất cả chúng ta khai báo và tạo ArrayList, tất cả chúng ta hoàn toàn có thể khởi tạo nó với những giá trị thiết yếu. Có 1 số ít giải pháp để khởi tạo ArrayList như được đề cập bên dưới .

Sử dụng phương thức add ()

Một chiêu thức thông dụng để khởi tạo ArrayList trong Java là sử dụng phương pháp add ( ) .

ArrayList colors = new ArrayList();
colors.add("Red");
colors.add("Blue");
colors.add("Green");

Sử dụng phương thức asList ()

Chúng ta hoàn toàn có thể sử dụng phương pháp asList ( ) của lớp Arrays trong khi tạo ArrayList. Đây là một phương pháp khác để khởi tạo ArrayList .

ArrayList color = new ArrayList(
  Arrays.asList("Red","Blue","Green")
);

Sử dụng phương thức List.Of ()

Phương thức List. of ( ) là một cách khác để khởi tạo ArrayList .

List colors = new ArrayList<>(
  List.of("Red","Blue","Green")
);

Sử dụng Bộ sưu tập khác

Chúng ta cũng hoàn toàn có thể khởi tạo ArrayList bằng cách sử dụng những giá trị của Bộ sưu tập khác. Trong đoạn mã dưới đây, chúng tôi khởi tạo biến tài liệu với những giá trị ArrayList màu .

ArrayList colors = new ArrayList();
colors.add("Red");
colors.add("Blue");
colors.add("Green");
    
ArrayList data = new ArrayList(colors);

Ví dụ về Java ArrayList

Tạo ArrayList và thêm các phần tử và bộ sưu tập

Đầu tiên, chúng tôi tạo một ArrayList trong Java kiểu Chuỗi và sau đó thêm những thành phần vào list. Sau đó, chúng tôi thêm một thành phần mới tại chỉ mục 1. Do đó, thành phần đã xuất hiện trước đó ở chỉ mục 1 sẽ chuyển dời tuần tự sang bên phải. Chỉ mục trong một mảng luôn khởi đầu từ 0 .Tiếp theo, chúng tôi tạo một list mới với 2 thành phần và thêm hàng loạt tập hợp vào list 1 tại chỉ mục 1 .

import java.util.ArrayList;

public class ArrayListDemo {

  public static void main(String[] args) {
    //Create a String ArrayList
    ArrayList al = new ArrayList();
    
    //Add elements
    al.add("Java");
    al.add("JavaScript");
    al.add("PHP");

    System.out.println("Element in the list1:");
    System.out.println(al);
    
    //Add element at index 1
    al.add(1, "C");
    
    System.out.println("After adding element at index 1: ");
    System.out.println(al);
    
    //Create list2
    ArrayList list = new ArrayList();
    list.add("C++");
    list.add("Ruby");
    System.out.println("Elements in list2:");
    System.out.println(list);
    
    //Add list2 elements in list1
    al.addAll(1, list);
    System.out.println("Elements in List 1 after adding list2:");
    System.out.println(al);
    
  }

}

Output:
Element in the list1:
[Java, JavaScript, PHP]
After adding element at index 1: 
[Java, C, JavaScript, PHP]
Elements in list2:
[C++, Ruby]
Elements in List 1 after adding list2:
[Java, C++, Ruby, C, JavaScript, PHP]

Sửa đổi và xóa một phần tử khỏi ArrayList

Dưới đây là một chương trình ví dụ để sửa đổi mảng liệt kê và xóa một thành phần khỏi ArrayList trong Java .

import java.util.ArrayList;
public class ArrayListDemo2 {

  public static void main(String[] args) {
    //Create an Integer ArrayList
    ArrayList numbers = new ArrayList();
    numbers.add(4);
    numbers.add(8);
    numbers.add(2);
    
    System.out.println("Elements in the list are: ");
    System.out.println(numbers);
    
    //Modify element
    numbers.set(1, 6);
    
    System.out.println("After modifying an element at index 1:");
    System.out.println(numbers);
    
    //Remove an element
    numbers.remove(2);
    
    System.out.println("After removing an element at index 2:");
    System.out.println(numbers);
  }

}
Output:
Elements in the list are: 
[4, 8, 2]
After modifying an element at index 1:
[4, 6, 2]
After removing an element at index 2:
[4, 6]

Các phương pháp hữu ích khác

Ví dụ dưới đây minh họa việc sử dụng những phương pháp chứa ( ), indexOf ( ) và keepAll ( ) là một phần của ArrayList .

import java.util.ArrayList;
public class ArrayListDemo4 {

  public static void main(String[] args) {
    ArrayList letters = new ArrayList();
    letters.add("A");
    letters.add("G");
    letters.add("R");
    System.out.println(letters.contains("U"));
    int i = letters.indexOf("G");
    System.out.println("Index of G is " + i);
    
    ArrayList c = new ArrayList();
    c.add("F");
    c.add("E");
    c.add("T");
    c.add("P");
    letters.addAll(c);
    System.out.println("Elements in the list after using addAll:");
    System.out.println(letters);
    letters.retainAll(c);
    System.out.println("Elements in the list after using retainAll:");
    System.out.println(letters);


  }

}
Output:
false
Index of G is 1
Elements in the list after using addAll:
[A, G, R, F, E, T, P]
Elements in the list after using retainAll:
[F, E, T, P]

Xóa ArrayList trong java

Ví dụ dưới đây cho thấy rõ ràng hiệu quả của việc sử dụng những phương pháp isEmpty ( ) và clear ( ) trong ArrayList. Sử dụng phương pháp clear ( ), tất cả chúng ta hoàn toàn có thể làm trống ArrayList bằng cách vô hiệu toàn bộ những thành phần .

import java.util.ArrayList;
public class ArrayListDemo5 {

  public static void main(String[] args) {
    ArrayList s = new ArrayList();
    s.add("India");
    s.add("US");
    s.add("Germany");
    System.out.println("Contents in list:");
    System.out.println(s);
    System.out.println("Result of calling isEmpty(): " + s.isEmpty());
    s.clear();
    System.out.println("Contents in list after calling clear(): " + s);
    System.out.println("Result of calling isEmpty() after clear: " + s.isEmpty());
  }

}
Contents in list:
[India, US, Germany]
Result of calling isEmpty(): false
Contents in list after calling clear(): []
Result of calling isEmpty() after clear: true

ensureCapacity ()

Phương pháp này bảo vệ rằng Java ArrayList hoàn toàn có thể chứa số thành phần tối thiểu. Điều này hoàn toàn có thể được sử dụng cho size mảng đang tăng trưởng động .

import java.util.ArrayList;
public class ArrayListDemo6 {

  public static void main(String[] args) {
    ArrayList al = new ArrayList();
    al.add("Mango");
    al.add("Guava");
    al.add("Apple");
    al.ensureCapacity(3);
    System.out.println("Array list can store

tối thiểu

 of 3 elements");
    al.add("Orange");
    System.out.println(al);
  }

}
Output:
Array list can store minimum of 3 elements
[Mango, Guava, Apple, Orange]

In ArrayList trong Java – Lặp lại hoặc điều hướng qua các phần tử

Chúng ta hoàn toàn có thể lặp lại trải qua ArrayList trong Java bằng bất kể chiêu thức nào dưới đây :

  • Vòng lặp for
  • Cho mỗi
  • Giao diện lặp lại
  • Giao diện ListIterator

Nhận các phần tử bằng vòng lặp for

Ở đây, chúng tôi sử dụng vòng lặp for để truy xuất những thành phần của mảng và in chúng ở đầu ra .

import java.util.ArrayList;
public class ArrayListDemo3 {

  public static void main(String[] args) {
    
    ArrayList list = new ArrayList();
    list.add("Ramesh");
    list.add("Banu");
    list.add("Priya");
    list.add("Karthik");

    int size = list.size();
    System.out.println("Size of list is : " + size);
    for(int i=0;i
Output:
Size of list is : 4
Ramesh
Banu
Priya
Karthik

 Nhận các phần tử bằng cách sử dụng Cho mỗi vòng lặp

Chúng tôi cũng hoàn toàn có thể sử dụng cho mỗi vòng lặp để lấy những thành phần mảng như miêu tả bên dưới .

import java.util.ArrayList;
public class ArrayListDemo3 {

  public static void main(String[] args) {
    
    ArrayList list = new ArrayList();
    list.add("Ramesh");
    list.add("Banu");
    list.add("Priya");
    list.add("Karthik");

    for(String s: list)
    {
      System.out.println(s);
    }
  }

}
Output:
Ramesh
Banu
Priya
Karthik

Duyệt qua bằng Iterator và ListIterator

Iterator và ListIterator khác chiêu thức duyệt qua những thành phần mảng trong Java ArrayList. Đối với điều này, thứ nhất tất cả chúng ta tạo một ArrayList và sử dụng đối tượng người dùng đó để tạo một đối tượng người tiêu dùng vòng lặp hoặc đối tượng người dùng ListIterator. Sau đó, tất cả chúng ta hoàn toàn có thể sử dụng những phương pháp có sẵn như next ( ) để lấy những thành phần bằng cách tái diễn bằng cách sử dụng trong khi lặp lại. Chúng ta cũng hoàn toàn có thể duyệt lùi bằng cách sử dụng phương pháp trước ( ) .

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class ArrayListIterator {

  public static void main(String[] args) {
    ArrayList cities = new ArrayList();
    cities.add("Bangalore");
    cities.add("Chennai");
    cities.add("Delhi");
    cities.add("Mumbai");
    cities.add("Hyderabad");
    
    System.out.println("Traversing forward using iterator");
    Iterator it = cities.iterator();
    while(it.hasNext()) {
      System.out.println(it.next());
    }
    
    System.out.println("\nTraversing reverse using listiterator");
    ListIterator li = cities.listIterator(cities.size());
    while(li.hasPrevious()) {
      System.out.println(li.previous());
    }
    
  }

}
Output:
Traversing forward using iterator
Bangalore
Chennai
Delhi
Mumbai
Hyderabad

Traversing reverse using listiterator
Hyderabad
Mumbai
Delhi
Chennai
Bangalore

Sắp xếp một ArrayList trong Java

Chúng ta có thể sắp xếp các phần tử trong danh sách mảng bằng cách sử dụng khuôn khổ Bộ sưu tập Java loại phương pháp như minh họa bên dưới. Chúng tôi đây sắp xếp số nguyên hiện trong ArrayList.

import java.util.ArrayList;
import java.util.Collections;

public class ArrayListSort {

  public static void main(String[] args) {
    ArrayList i = new ArrayList();
    i.add(5);
    i.add(1);
    i.add(10);
    i.add(3);
    i.add(8);
    System.out.println("Before Sorting");
    for(int num : i)
      System.out.println(num);
    Collections.sort(i);
    System.out.println("After Sorting");
    for(int numbers : i)
      System.out.println(numbers);
  }

}
Output:
Before Sorting
5
1
10
3
8
After Sorting
1
3
5
8
10

Ví dụ về Java ArrayList về các đối tượng do người dùng định nghĩa

Chúng ta cũng hoàn toàn có thể sử dụng ArrayList để tàng trữ những đối tượng người tiêu dùng do người dùng định nghĩa. Ví dụ dưới đây cho thấy cách chúng tôi tàng trữ đối tượng người dùng lớp Employee trong ArrayList. Sử dụng điều này, bạn hoàn toàn có thể thêm những thành phần vào ArrayList .

import java.util.ArrayList;
import java.util.Iterator;
class Employee
{
  int empid;
  String empname;
  String empdesignation;
  
  Employee(int empid,String empname,String empdesignation)
  {
    this.empid = empid;
    this.empname = empname;
    this.empdesignation = empdesignation;
  }
}
public class ArrayListObject {

  public static void main(String[] args) {
    //Create Employee class objects
    Employee e1 = new Employee(100,"Rohit","Developer");
    Employee e2 = new Employee(200,"Shyam","Tester");
    Employee e3 = new Employee(205,"Tarun","Trainee");
    
    //Create an arraylist
    ArrayList list = new ArrayList();
    
    //Add employee objects to the list
    list.add(e1);
    list.add(e2);
    list.add(e3);
    
    //Declare iterator
    Iterator i = list.iterator();
    while(i.hasNext()) {
      //Convert to Employee object to access the elements
      Employee emp = (Employee)i.next();
      System.out.println(emp.empid + " " + emp.empname + " " + emp.empdesignation);
    }
    

  }

}
Output:
100 Rohit Developer
200 Shyam Tester
205 Tarun Trainee

Kết luận

Hướng dẫn này bàn luận chi tiết cụ thể về ArrayList và cách khởi tạo ArrayList trong Java, những phương pháp của nó và cách tìm nạp những thành phần mảng từ mảng cùng với những chương trình ví dụ. Bạn hoàn toàn có thể chăm sóc Câu hỏi phỏng vấn tuyển tập Java sau đó đi và xử lý những cuộc phỏng vấn .Tài liệu tìm hiểu thêm

LinkedIn

Đệm

Reddit

Tumblr

7CỔ PHẦN