Java List là gì? Tất tần tật kiến thức List trong Java từ A-Z [2021]

By 06/06/2021Tháng Bảy 17th, 2021Java, KIẾN THỨC LẬP TRÌNH

Là một Java beginner, bạn cần học tuần tự từng chủ đề cơ bản nhất để chắc chắn rằng mình không bị lỗ kiến thức nào.

Tin chắc rằng những gì mà tôi giới thiệu trong bài viết List Java từ A-Z này sẽ thực sự cần thiết đối với bạn.

Phần 1. Tìm hiểu về Java Collections Framework

Java Collections Framework cung cấp một tập hợp các interfaces (giao diện) và class (lớp) để triển khai các cấu trúc dữ liệu và thuật toán khác nhau.

Java Collection framework cung cấp nhiều interfaces (Set, List, Queue, Deque) và nhiều lớp (ArrayList, Vector, LinkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet).

Ví dụ, class LinkedList của Collections Framework cung cấp một tập hợp các interfaces để triển khai cấu trúc dữ liệu danh sách được liên kết kép.

Collection trong Java là gì?

Collection trong Java là một framework cung cấp kiến trúc để lưu trữ và thao tác một nhóm các đối tượng nhất định.

Java Collection có thể thực hiện được tất cả các hoạt động mà bạn có thể thực hiện trên dữ liệu, chẳng hạn như tìm kiếm, sắp xếp, chèn, thao tác và xóa.

Java Collection đại diện một đơn vị đối tượng riêng lẻ, chẳng hạn như nhóm

Framework trong Java là gì?

Framework trong Java có các đặc tính dưới đây:

  • Cung cấp kiến trúc được làm sẵn
  • Đại diện cho một tập hợp các class và interface.
  • Mang tính tùy chọn

Collection framework là gì?

Collection framework đại diện cho một kiến trúc thống nhất để lưu trữ và thao tác một nhóm đối tượng. Nó có:

  1. Interface và các cách triển khai của nó, chính xác là các lớp (class)
  2. Thuật toán

Collections Framework với Collection Interface

Không ít người thường bị nhầm lẫn giữa Collections Framework và Collection Interface.

Collection Interface là interface gốc của collections framework.

Framework bao gồm nhiều interface như: Map và Iterator. Các interface này cũng có thể có các Subinterface (interface con).

Interfaces của Collections FrameWork

Java collections framework cung cấp nhiều interface khác nhau.

Các interface này bao gồm nhiều method để thực hiện nhiều hoạt động khác nhau trên các collection.

list trong java

Java Collections Framework

Tôi sẽ giới thiệu chi tiết về các interface, các Subinterface của chúng và cách triển khai trong các class khác nhau trong những chương tiếp theo.

Còn trong chương này, hãy cùng tìm hiểu sơ lược về các interface được sử dụng phổ biến nhất.

Subinterfaces của Collection Interface

Collection Interface bao gồm các Subinterface được thực hiện bởi các class Java.

Tất cả các method của Collection interface cũng hiện diện trong các subinterface của nó.

Tại sao cần Collections Framework?

Java collections framework cung cấp cấu trúc dữ liệu và thuật toán đa dạng mà bạn có thể sử dụng trực tiếp.

2 lợi ích chính mà Collections Framework mang lại như sau:

  • Bạn không cần phải viết lại code để triển khai các cấu trúc dữ liệu và thuật toán này một cách thủ công
  • Các đoạn code làm sẵn sẽ có tính hiệu quả cao hơn bởi collections framework đã được tối ưu hóa cao.

Ngoài ra, collections framework cho phép bạn sử dụng một cấu trúc dữ liệu nhất định cho một loại dữ liệu cụ thể.

Dưới đây là một vài ví dụ giúp bạn hiểu rõ hơn:

  • Nếu bạn muốn dữ liệu của mình là duy nhất, thì bạn có thể sử dụng interface Set do collections framework cung cấp.
  • Để lưu trữ dữ liệu theo cặp key/value, bạn có thể sử dụng interface Map.
  • Class ArrayList cung cấp tính năng tạo ra các mảng có thể thay đổi kích thước.

Ví dụ: ArrayList Class của Collections

Trước khi kết thúc phần này, tôi sẽ đưa ra một ví dụ về class ArrayList của collections framework.

Class ArrayList cho phép bạn tạo ra các mảng có thể thay đổi kích thước.

Lớp này thực hiện interface List (là một subinterface của Collection interface).

// The Collections framework is defined in the java.util package

import java.util.ArrayList;

 

class Main {

public static void main(String[] args){

ArrayList<String> animals = new ArrayList<>();

// Add elements

animals.add(“Dog”);

animals.add(“Cat”);

animals.add(“Horse”);

System.out.println(“ArrayList: ” + animals);

}

}

Đầu ra

ArrayList: [Dog, Cat, Horse]

Phần 2. Tìm hiểu về Java Collection Interface

Trong phần này, bạn sẽ được tìm hiểu về Java Collection interface và các subinterface của nó.

Collection Interface là interface gốc của Java collections framework.

Không có cách triển khai trực tiếp nào của interface này. Tuy nhiên, nó được triển khai thông qua các subinterface của nó, chẳng hạn như List, Set, và Queue.

Ví dụ, class ArrayList triển khai interface List – là một subinterface của Collection Interface.

java list

Collection Interface

 

Collection interface là gì?

Collection interface là một nền tảng mà collections framework được xây dựng. Nó khai báo các method cốt lõi mà các collection sẽ có.

Subinterfaces của Collection

Như đã đề cập như trên, Collection interface bao gồm các subinterface được triển khai bởi nhiều class khác nhau trong Java.

  1. List Interface

List Interface là một collection có thứ tự cho phép bạn thêm và bớt các phần tử giống tương tự như một mảng.

  1. Set Interface

Set Interface cho phép bạn lưu trữ các phần tử trong các tập hợp khác nhau tương tự như tập hợp trong toán học. Nó không thể có các phần tử trùng lặp.

  1. Queue Interface

Queue Interface giúp bạn có thể lưu trữ và truy cập các phần tử theo thứ tự first in, first out (nhập trước, xuất trước).

Methods của Collection

Collection interface bao gồm nhiều method có thể được sử dụng để thực hiện các hoạt động khác nhau trên các đối tượng.

Các method dưới đây có sẵn trong tất cả các subinterface:

  • add() – chèn phần tử được chỉ định vào collection
  • size() – trả về kích thước của collection
  • remove() – xóa phần tử được chỉ định ra khỏi collection
  • iterator() – trả về một biến lặp để truy cập các phần tử của collection
  • addAll() – thêm tất cả các phần tử của một collection được chỉ định vào collection đó.
  • removeAll() – xóa tất cả các phần tử của collection được chỉ định ra khỏi collection đó
  • clear() – xóa tất cả các phần tử của collection

Phần 3. Tìm hiểu về Java List Interface

Trong phần này, tôi sẽ giải thích chi tiết về List interface trong Java và các method của nó.

Trong Java, List interface là một collection được sắp xếp theo thứ tự cho phép bạn lưu trữ và truy cập và các phần tử một cách tuần tự. Nó giúp mở rộng Collection interface.

List Interface là gì?

List Interface giúp bạn lưu trữ collection được sắp xếp theo thứ tự. Nó là một subinterface của Collection.

Nó là một collection bao gồm nhiều đối tượng được sắp xếp theo thứ tự trong đó các giá trị trùng lặp có thể được lưu trữ.

Bởi vì List bảo toàn thứ tự chèn vào nên nó cho phép truy cập theo vị trí chèn vào của phần tử.

Các Class Implement List

Vì List là một interface nên bạn không thể tạo ra các đối tượng thông qua nó.

Để sử dụng các tính năng của List interface, bạn có thể sử dụng các class dưới đây:

  • ArrayList
  • LinkedList
  • Vector
  • Stack
list string java

Triển khai List interface thông qua các class

Các class được xác định trong Collections framework và thực hiện List interface.

Hướng dẫn cách sử dụng List trong Java

Bạn cần phải nhập gói java.util.List thì mới có thể sử dụng List trong Java.

// ArrayList implementation of List

List<String> list1 = new ArrayList<>();

// LinkedList implementation of List

List<String> list2 = new LinkedList<>();

Ở đây, tôi đã tạo ra các đối tượng list1 và list2 của các class ArrayList và LinkedList trong Java. Các đối tượng có thể sử dụng các tính năng của List interface.

Methods của List Java

List Interface bao gồm tất cả các method của Collection interface. Bởi vì Collection là một siêu interface của List.

Dưới đây là một trong số các method thường được sử dụng của Collection interface sẵn có trong List interface:

  • add() – thêm một phần tử vào list
  • addAll() – thêm tất cả các phần tử của list này vào list khác
  • get() – giúp truy cập ngẫu nhiên các phần tử từ list
  • iterator() – trả về đối tượng lặp có thể được sử dụng để truy cập tuần tự các phần tử của list
  • set() – thay đổi các phần tử của list
  • remove() – xóa một phần tử ra khỏi list
  • removeAll() – xóa tất cả các phần tử ra khỏi list
  • clear() – xóa tất cả các phần tử khỏi list (hiệu quả hơn removeAll())
  • size() – trả về độ dài của list
  • toArray() – chuyển đổi một list thành một mảng
  • contains() – trả về giá trị true (đúng) nếu list chứa phần tử được chỉ định

Ví dụ cách triển khai List Interface

  1. Triển khai class ArrayList

import java.util.List;

import java.util.ArrayList;

class Main {

public static void main(String[] args) {

// Creating list using the ArrayList class

List<Integer> numbers = new ArrayList<>();

// Add elements to the list

numbers.add(1);

numbers.add(2);

numbers.add(3);

System.out.println(“List: ” + numbers);

// Access element from the list

int number = numbers.get(2);

System.out.println(“Accessed Element: ” + number);

// Remove element from the list

int removedNumber = numbers.remove(1);

System.out.println(“Removed Element: ” + removedNumber);

}

}

Đầu ra

List: [1, 2, 3]

Accessed Element: 3

Removed Element: 2

  1. Triển khai class LinkedList

import java.util.List;

import java.util.LinkedList;

class Main {

public static void main(String[] args) {

// Creating list using the LinkedList class

List<Integer> numbers = new LinkedList<>();

// Add elements to the list

numbers.add(1);

numbers.add(2);

numbers.add(3);

System.out.println(“List: ” + numbers);

// Access element from the list

int number = numbers.get(2);

System.out.println(“Accessed Element: ” + number);

// Using the indexOf() method

int index = numbers.indexOf(2);

System.out.println(“Position of 3 is ” + index);

// Remove element from the list

int removedNumber = numbers.remove(1);

System.out.println(“Removed Element: ” + removedNumber);

}

}

Đầu ra

List: [1, 2, 3]

Accessed Element: 3

Position of 3 is 1

Removed Element: 2

Java List với Set

Cả Java List interface và Set interface đều kế thừa từ Collection interface. Tuy nhiên, giữa chúng vẫn tồn tại một số điểm khác biệt như sau:

  • List có thể bao gồm các phần tử trùng lặp. Tuy nhiên, các set lại không thể chứa các phần tử trùng lặp.
  • Các phần tử trong list java được lưu trữ theo thứ tự. Thế nhưng, các phần tử trong các set được lưu trữ theo các nhóm giống như các set trong toán học.

Phần 4. Tìm hiểu về Java ArrayList

Trong phần này, tôi sẽ giới thiệu về class ArrayList trong Java, các hoạt động và phương thức khác nhau của nó thông qua các ví dụ.

ArrayList Class của Java collections framework cung cấp tính năng có thể thay đổi kích thước của các mảng.

Nó giúp triển khai List interface.

list và arraylist trong java

Triển khai Java ArrayList

Java ArrayList với Array

Trong Java, bạn cần khai báo kích thước của mảng trước khi sử dụng nó. Khi kích thước của một mảng đã được khai báo thì rất khó để thay đổi.

Để giải quyết vấn đề này, bạn có thể sử dụng ArrayList class. Bởi vì nó cho phép tạo ra các mảng có thể thay đổi kích thước.

Không giống như array, khi đã khai báo arraylist trong java thì nó có thể tự động điều chỉnh dung lượng của nó khi bạn thêm hoặc bớt các phần tử trong mảng. Do đó, arraylists còn được gọi là array động.

Tạo ArrayList

Trước khi sử dụng ArrayList, bạn cần nhập gói java.util.ArrayList. Dưới đây là cách tạo ra arraylists trong Java:

ArrayList<Type> arrayList= new ArrayList<>();

Ở đây, Type thể hiện kiểu của một arraylist. Ví dụ,

// create Integer type arraylist

ArrayList<Integer> arrayList = new ArrayList<>();

// create String type arraylist

ArrayList<String> arrayList = new ArrayList<>();

Trong lập trình trên, tôi đã sử dụng Integer chứ không phải Int. Bởi vì tôi không thể sử dụng các kiểu dữ liệu nguyên thủy khi tạo ra arraylist.

Thay vào đó, tôi phải sử dụng các lớp wrapper tương ứng. Ở đây, Integer là lớp wrapper tương ứng của int.

Ví dụ: Tạo ArrayList trong Java

import java.util.ArrayList;

class Main {

public static void main(String[] args){

// create ArrayList

ArrayList<String> languages = new ArrayList<>();

// Add elements to ArrayList

languages.add(“Java”);

languages.add(“Python”);

languages.add(“Swift”);

System.out.println(“ArrayList: ” + languages);

}

}

Đầu ra

ArrayList: [Java, Python, Swift]

Trong ví dụ này, tôi đã tạo ra một ArrayList có tên là languages

Bên cạnh đó, tôi đã sử dụng method add() để thêm các phần tử vào arraylist.

Lưu ý: Bạn cũng có thể tạo arraylist bằng interface List Java bởi vì ArrayList class triển khai interface List.

List<String> list = new ArrayList<>();

Các bước cơ bản khi triển khai ArrayList

ArrayList class cung cấp nhiều method khác nhau để làm các hoạt động khác nhau trên arraylists.

Dưới đây là các hoạt động của arraylist thường được sử dụng:

  • Thêm các phần tử
  • Truy cập vào các phần tử
  • Thay đổi các phần tử
  • Loại bỏ các phần tử
  1. Thêm các phần tử vào ArrayList

Để thêm một phần tử riêng lẻ vào arraylist, bạn sử dụng method add() của ArrayList class. Ví dụ:

import java.util.ArrayList;

class Main {

public static void main(String[] args){

// create ArrayList

ArrayList<String> languages = new ArrayList<>();

// add() method without the index parameter

languages.add(“Java”);

languages.add(“C”);

languages.add(“Python”);

System.out.println(“ArrayList: ” + languages);

// add() method with the index parameter

languages.add(1, “JavaScript”);

System.out.println(“Updated ArrayList: ” + languages);

}

}

Đầu ra

ArrayList: [Java, C, Python]

Updated ArrayList: [Java, JavaScript, C, Python]

Trong ví dụ trên, tôi đã tạo ra một ArrayList có tên là languages. Ở đây, tôi sử dụng method add() để thêm các phần tử vào languages.

Hãy chú ý vào câu lệnh này,

languages.add(1, “JavaScript”);

Ở đây, tôi đã sử dụng tham số chỉ số. Nó là một tham số tùy chọn giúp chỉ định vị trí của phần tử mới được thêm vào

Bạn cũng có thể thêm các phần tử của một collection vào arraylist bằng cách sử dụng method addAll()

  1. Truy cập vào các phần tử ArrayList

Để truy cập vào một phần tử từ arraylist, bạn sử dụng method get() của ArrayList class. Ví dụ:

import java.util.ArrayList;

class Main {

public static void main(String[] args) {

ArrayList<String> animals = new ArrayList<>();

// add elements in the arraylist

animals.add(“Cat”);

animals.add(“Dog”);

animals.add(“Cow”);

System.out.println(“ArrayList: ” + animals);

// get the element from the arraylist

String str = animals.get(1);

System.out.print(“Element at index 1: ” + str);

}

}

Đầu ra

ArrayList: [Cat, Dog, Cow]

Element at index 1: Dog

Trong ví dụ trên, tôi đã sử dụng method get() với tham số 1. Ở đây, method này trả về phần tử ở chỉ số 1.

Ngoài ra, bạn cũng có thể truy cập vào các phần tử của ArrayList bằng cách sử dụng method iterator().

  1. Thay đổi các phần tử ArrayList

Để thay đổi phần tử của arraylist, bạn sử dụng method set() của lớp ArrayList. Ví dụ,

import java.util.ArrayList;

class Main {

public static void main(String[] args) {

ArrayList<String> languages = new ArrayList<>();

// add elements in the array list

languages.add(“Java”);

languages.add(“Kotlin”);

languages.add(“C++”);

System.out.println(“ArrayList: ” + languages);

// change the element of the array list

languages.set(2, “JavaScript”);

System.out.println(“Modified ArrayList: ” + languages);

}

}

Đầu ra

ArrayList: [Java, Kotlin, C++]

Modified ArrayList: [Java, Kotlin, JavaScript]

Trong ví dụ trên, tôi đã tạo ra một ArrayList có tên là languages. Hãy chú ý vào dòng

language.set(2, “JavaScript”);

Ở đây, method set() thay đổi phần tử ở chỉ số 2 thành JavaScript.

  1. Loại bỏ các phần tử Arraylist

Để loại bỏ một phần tử ra khỏi arraylist, bạn có thể sử dụng method remove() của ArrayList class. Ví dụ,

import java.util.ArrayList;

class Main {

public static void main(String[] args) {

ArrayList<String> animals = new ArrayList<>();

// add elements in the array list

animals.add(“Dog”);

animals.add(“Cat”);

animals.add(“Horse”);

System.out.println(“ArrayList: ” + animals);

// aemove element from index 2

String str = animals.remove(2);

System.out.println(“Updated ArrayList: ” + animals);

System.out.println(“Removed Element: ” + str);

}

}

Đầu ra

ArrayList: [Dog, Cat, Horse]

Updated ArrayList: [Dog, Cat]

Removed Element: Horse

Ở đây, method remove() lấy index number làm tham số. Và xóa phần tử được chỉ định bởi index number.

Bạn cũng có thể loại bỏ tất cả các phần tử ra khỏi arraylist cùng một lúc bằng cách sử dụng các method:

  • Java ArrayList removeAll()
  • Java ArrayList clear()

Phần 5. Tìm hiểu về Java Vector

Tiếp theo, tôi sẽ giới thiệu khái quát về lớp Vector và cách sử dụng nó, sự khác biệt giữa Vector class và ArrayList class và vì sao nên sử dụng arraylist thay vì sử dụng nó.

Vector class là một cách triển khai của List interface cho phép bạn tạo ra các mảng có thể thay đổi kích thước. Nó tương tự như ArrayList class.

Java Vector với ArrayList

Trong Java, cả ArrayList và Vector đều triển khai List interface và cung cấp các tính năng giống nhau.

Tuy nhiên, giữa chúng vẫn có một vài điểm khác biệt

Vector class đồng bộ hóa từng hoạt động riêng lẻ. Điều này có nghĩa là bất cứ khi nào bạn muốn thực hiện một vài hoạt động trên các Vector thì Vector class sẽ tự động áp dụng khóa cho các hoạt động đó.

Nguyên nhân là do khi một luồng đang truy cập vào một vector và cùng lúc đó, một luồng khác cũng cố gắng truy cập vào nó, một exception (ngoại lệ) có tên gọi ConcurrentModificationException được tạo ra.

Do đó, việc sử dụng liên tục các khóa cho mỗi hoạt động sẽ làm cho vector kém hiệu quả hơn.

Tuy nhiên, trong arraylist, các method lại không được đồng bộ hóa. Thay vào đó, nó sử dụng method Collections.synchronizedList() đồng bộ hóa toàn bộ danh sách

Lưu ý, bạn nên sử dụng ArrayList thay cho Vector vì Vector không an toàn và ít hiệu quả hơn.

Tạo Vector

Dưới đây là cách mà bạn có thể tạo ra Vector trong Java:

Vector<Type> vector = new Vector<>();

Ở đây, Type cho biết loại list được liên kết. Ví dụ,

// create Integer type linked list

Vector<Integer> vector= new Vector<>();

// create String type linked list

Vector<String> vector= new Vector<>();

Methods của Vector

Vector class cũng cung cấp các cách triển khai mảng có thể thay đổi kích thước của List interface (tương tự như ArrayList class).

Hãy cùng tìm hiểu một số method phổ biến của Vector trong những phần dưới đây.

Thêm phần tử vào Vectơ

  • add(element) – thêm một phần tử vào vectơ
  • add(index, element) – thêm một phần tử vào vị trí được chỉ định
  • addAll(vector) – thêm tất cả các phần tử của một vectơ vào một vectơ khác

Ví dụ,

import java.util.Vector;

class Main {

public static void main(String[] args) {

Vector<String> mammals= new Vector<>();

// Using the add() method

mammals.add(“Dog”);

mammals.add(“Horse”);

// Using index number

mammals.add(2, “Cat”);

System.out.println(“Vector: ” + mammals);

// Using addAll()

Vector<String> animals = new Vector<>();

animals.add(“Crocodile”);

animals.addAll(mammals);

System.out.println(“New Vector: ” + animals);

}

}

Đầu ra

Vector: [Dog, Horse, Cat]

New Vector: [Crocodile, Dog, Horse, Cat]

Truy cập các phần tử Vectơ

  • get(index) – trả về một phần tử được chỉ định bởi chỉ mục
  • iterator() – trả về một đối tượng lặp để truy cập tuần tự các phần tử vectơ

Ví dụ,

import java.util.Iterator;

import java.util.Vector;

class Main {

public static void main(String[] args) {

Vector<String> animals= new Vector<>();

animals.add(“Dog”);

animals.add(“Horse”);

animals.add(“Cat”);

// Using get()

String element = animals.get(2);

System.out.println(“Element at index 2: ” + element);

// Using iterator()

Iterator<String> iterate = animals.iterator();

System.out.print(“Vector: “);

while(iterate.hasNext()) {

System.out.print(iterate.next());

System.out.print(“, “);

}

}

}

Đầu ra

Element at index 2: Cat

Vector: Dog, Horse, Cat,

Xóa các phần tử Vectơ

  • remove(index) – xóa một phần tử khỏi vị trí đã được chỉ định
  • removeAll() – loại bỏ tất cả các phần tử
  • clear() – loại bỏ tất cả các phần tử. Method này hiệu quả hơn removeAll()

Ví dụ:

import java.util.Vector;

class Main {

public static void main(String[] args) {

Vector<String> animals= new Vector<>();

animals.add(“Dog”);

animals.add(“Horse”);

animals.add(“Cat”);

System.out.println(“Initial Vector: ” + animals);

// Using remove()

String element = animals.remove(1);

System.out.println(“Removed Element: ” + element);

System.out.println(“New Vector: ” + animals);

// Using clear()

animals.clear();

System.out.println(“Vector after clear(): ” + animals);

}

}

Đầu ra

Initial Vector: [Dog, Horse, Cat]

Removed Element: Horse

New Vector: [Dog, Cat]

Vector after clear(): []

Các phương pháp vectơ khác

Method Mô tả chức năng
set() thay đổi một phần tử của vectơ
size() trả về kích thước của vectơ
toArray() chuyển đổi vectơ thành một mảng
toString() chuyển đổi vectơ thành chuỗi
contains() tìm kiếm vectơ cho phần tử đã được chỉ định và trả về kết quả Boolean

 

Phần 6. Tìm hiểu về Java Stack

Trong phần này, bạn sẽ được tìm hiểu về Java Stack class và các method của nó thông qua các ví dụ minh họa.

Java collections framework có một class có tên là Stack. Class này cung cấp chức năng của cấu trúc dữ liệu ngăn xếp.

Stack class giúp mở rộng Vector class.

linkedlist trong java

Stack class

Stack Implementation

Trong ngăn xếp (stack), các phần tử được lưu trữ và truy cập theo cách thức Last In, First Out (nhập sau, xuất trước).

Điều này có nghĩa là các phần tử được thêm vào đầu ngăn xếp cũng như bị xóa ra khỏi đầu ngăn xếp.

collections trong java

Cách hoạt động của Stack class

Tạo Stack

Để tạo một stack, trước tiên, bạn phải nhập gói java.util.Stack. Sau khi nhập xong, bạn có thể tạo ra stack trong Java bằng cách như sau:

Stack<Type> stacks = new Stack<>();

Ở đây, Type biểu thị loại của stack. Ví dụ,

// Create Integer type stack

Stack<Integer> stacks = new Stack<>();

// Create String type stack

Stack<String> stacks = new Stack<>();

Stack Methods

Vì Stack giúp mở rộng Vector class nên nó kế thừa tất cả các method của Vector.

Bên cạnh những method đó, Stack class còn có thêm 5 method khác biệt với Vector class.

Method push()

Để thêm một phần tử vào đầu stack, bạn có thể sử dụng method push(). Ví dụ:

import java.util.Stack;

class Main {

public static void main(String[] args) {

Stack<String> animals= new Stack<>();

// Add elements to Stack

animals.push(“Dog”);

animals.push(“Horse”);

animals.push(“Cat”);

System.out.println(“Stack: ” + animals);

}

}

Đầu ra

Stack: [Dog, Hors

Method pop()

Để xóa một phần tử ra khỏi đầu stack, bạn có thể sử dụng method pop(). Ví dụ:

import java.util.Stack;

class Main {

public static void main(String[] args) {

Stack<String> animals= new Stack<>();

// Add elements to Stack

animals.push(“Dog”);

animals.push(“Horse”);

animals.push(“Cat”);

System.out.println(“Initial Stack: ” + animals);

// Remove element stacks

String element = animals.pop();

System.out.println(“Removed Element: ” + element);

}

}

Đầu ra

Initial Stack: [Dog, Horse, Cat]

Removed Element: Cat

Method peek()

Method peek() sẽ trả về một đối tượng nằm trên cùng của stack. Ví dụ:

import java.util.Stack;

class Main {

public static void main(String[] args) {

Stack<String> animals= new Stack<>();

// Add elements to Stack

animals.push(“Dog”);

animals.push(“Horse”);

animals.push(“Cat”);

System.out.println(“Stack: ” + animals);

// Access element from the top

String element = animals.peek();

System.out.println(“Element at top: ” + element);

}

}

Đầu ra

Stack: [Dog, Horse, Cat]

Element at top: Cat

Method search()

Để tìm kiếm một phần tử trong stack, bạn có thể sử dụng method search(). Nó sẽ trả về vị trí của phần tử nằm trên cùng của stack. Ví dụ:

import java.util.Stack;

class Main {

public static void main(String[] args) {

Stack<String> animals= new Stack<>();

 

// Add elements to Stack

animals.push(“Dog”);

animals.push(“Horse”);

animals.push(“Cat”);

System.out.println(“Stack: ” + animals);

// Search an element

int position = animals.search(“Horse”);

System.out.println(“Position of Horse: ” + position);

}

}

Đầu ra

Stack: [Dog, Horse, Cat]

Position of Horse: 2

Method empty()

Để kiểm tra xem một stack có rỗng hay không, bạn cần sử dụng method empty(). Ví dụ:

import java.util.Stack;

class Main {

public static void main(String[] args) {

Stack<String> animals= new Stack<>();

// Add elements to Stack

animals.push(“Dog”);

animals.push(“Horse”);

animals.push(“Cat”);

System.out.println(“Stack: ” + animals);

// Check if stack is empty

boolean result = animals.empty();

System.out.println(“Is the stack empty? ” + result);

}

}

Đầu ra

Stack: [Dog, Horse, Cat]

Is the stack empty? false

Sử dụng ArrayDeque thay vì Stack

Stack class cung cấp cách triển khai trực tiếp cấu trúc dữ liệu ngăn xếp. Tuy nhiên, các chuyên gia khuyến cáo không nên sử dụng nó.

Thay vào đó, hãy sử dụng lớp ArrayDeque (triển khai Deque interface) để triển khai cấu trúc dữ liệu ngăn xếp trong Java.

Hy vọng qua những chia sẻ về List Java trên đây, bạn đã nắm được 6 chủ đề chính: Java Collections Framework, Java Collection Interface, Java List Interface, Java ArrayList, Java Vector và Java Stack.

Nếu bạn vẫn chưa hiểu rõ về những chủ đề trên và có mong muốn học hỏi, còn chần chờ gì mà không tham gia khóa học Java online của Ironhack Việt Nam!

Để lại một câu trả lời