List Java là gì? Tìm hiểu List trong Java [update 2021]

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

Tin chắc nịch những gì mà tôi giới thiệu trong nội dung List Java từ ?-Ż này sẽ thực sự thiết yếu so với bạn.

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

Java Collections Framework phân phối một tập hợp các interfaces (giao diện) & class (lớp) để triển khai các cấu tạo dữ liệu & thuật toán khác nhau.

Java Collection framework phân phối nhiều interfaces (Set, List, Queue, Deque) & nhiều lớp (ArrayList, Vector, LinkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet).

Chẳng hạn, class LinkedList của Collections Framework phân phối một tập hợp các interfaces để triển khai cấu tạo dữ liệu mục lục được link kép.

Collection trong Java là gì?

Collection trong Java là một framework phân phối thiết kế để lưu trữ & thao tác một nhóm các đối tượng khẳng định.

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

Java Collection đại diện một nhà cung cấp đối tượng riêng rẽ, ví dụ như nhóm

Framework trong Java là gì?

Framework trong Java có các đặc điểm dưới đây:

  • Phân phối thiết kế được làm sẵn
  • Đại diện cho một tập hợp các class & interface.
  • Đưa tính tùy chọn

Collection framework là gì?

Collection framework đại diện cho một thiết kế hợp nhất để lưu trữ & thao tác một nhóm đối tượng. Nó có:

  1. Interface & các cách triển khai của nó, chuẩn 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ị lầm lẫn giữa Collections Framework & Collection Interface.

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

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

Interfaces của Collections FrameWork

Java collections framework phân phối 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.

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

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 thông dụng 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.

Toàn bộ các method của Collection interface cũng hiện diện trong các subinterface của nó.

Vì sao cần Collections Framework?

Java collections framework phân phối cấu tạo dữ liệu & thuật toán phong phú mà bạn có thể sử dụng trực tiếp.

2 lợi nhuận chính mà Collections Framework đem lại như sau:

  • Bạn không cần phải viết lại code để triển khai các cấu tạo dữ liệu & 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.

không chỉ thế, collections framework cho phép bạn sử dụng một cấu tạo dữ liệu khẳng định cho một loại dữ liệu rõ ràng và cụ thể.

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

  • Nếu bạn mong 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 phân phối.
  • Để lưu trữ dữ liệu theo cặp key/value, bạn có thể sử dụng interface Map.
  • Class ArrayList phân phối chức năng tạo thành các mảng có thể biến đổi kích cỡ.

Chẳng hạn: ArrayList Class của Collections

Trước khi chấm dứt phần này, tôi sẽ đặt ra một chẳng hạn về class ArrayList của collections framework.

Class ArrayList cho phép bạn tạo thành các mảng có thể biến đổi kích 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){

ArrayListvàlt;Stringvàgt; animals = new ArrayListvàlt;>();

// 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 & 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. Bên cạnh đó, nó được triển khai thông qua các subinterface của nó, ví dụ như List, Set, & Queue.

Chẳng hạn, class ArrayList triển khai interface List – là một subinterface của Collection Interface.

java list

 

Collection interface là gì?

Collection interface là một nền móng mà collections framework được xây dựng. Nó khai báo các method then chốt 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 & bớt các phần tử giống cũng giống 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 cũng giống như tập hợp trong toán học. Nó chẳ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ữ & 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 toàn bộ các subinterface:

  • add() – chèn phần tử được chỉ định vào collection
  • size() – trả về kích 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 toàn bộ các phần tử của một collection được chỉ định vào collection đó.
  • removeAll() – xóa toàn bộ các phần tử của collection được chỉ định ra khỏi collection đó
  • clear() – xóa toàn bộ các phần tử của collection
Xem Thêm  Thiết lập Tích hợp MySQL JavaScript: 3 Bước Dễ dàng - Tìm hiểu - mysql js sang mysql

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

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

Trong Java, List interface là một collection được sắp đặt theo thứ tự cho phép bạn lưu trữ & truy cập & 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 đặt 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 đặt 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 địa điểm chèn vào của phần tử.

Các Class Implement List

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

Để sử dụng các chức 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

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

Chỉ dẫn cách 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<Stringvàgt; list1 = new ArrayListvàlt;>();

// LinkedList implementation of List

List<Stringvàgt; list2 = new LinkedListvàlt;>();

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

Methods của List Java

List Interface bao gồm toàn bộ 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 hay được dùng của Collection interface sẵn có trong List interface:

  • add() – thêm một phần tử vào danh sách
  • addAll() – thêm toàn bộ các phần tử của danh sách này vào danh sách khác
  • get() – giúp truy cập đột nhiên các phần tử từ danh sách
  • 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 danh sách
  • set() – biến đổi các phần tử của danh sách
  • remove() – xóa một phần tử ra khỏi danh sách
  • removeAll() – xóa toàn bộ các phần tử ra khỏi danh sách
  • clear() – xóa toàn bộ các phần tử khỏi danh sách (hiệu quả hơn removeAll())
  • size() – trả về độ dài của danh sách
  • toArray() – chuyển hóa một danh sách thành một mảng
  • contains() – trả về giá trị true (đúng) nếu danh sách chứa phần tử được chỉ định

Chẳng hạn 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 danh sách using the ArrayList class

List<Integervàgt; numbers = new ArrayListvàlt;>();

// Add elements to the danh sách

numbers.add(1);

numbers.add(2);

numbers.add(3);

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

// Access element from the danh sách

int number = numbers.get(2);

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

// Remove element from the danh sách

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 danh sách using the LinkedList class

List<Integervàgt; numbers = new LinkedListvàlt;>();

// Add elements to the danh sách

numbers.add(1);

numbers.add(2);

numbers.add(3);

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

// Access element from the danh sách

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 danh sách

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 & Set interface đều kế thừa từ Collection interface. Bên cạnh đó, giữa chúng vẫn tồn tại một số điểm nổi bật như sau:

  • List có thể bao gồm các phần tử trùng lặp. Bên cạnh đó, các set lại chẳng thể chứa các phần tử trùng lặp.
  • Các phần tử trong danh sách 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 & phương pháp khác nhau của nó thông qua các chẳng hạn.

ArrayList Class của Java collections framework phân phối chức năng có thể biến đổi kích cỡ của các mảng.

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

list và arraylist trong java

Java ArrayList với Array

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

Để khắc phục vấn đề này, bạn có thể sử dụng ArrayList class. Bởi vì nó cho phép tạo thành các mảng có thể biến đổi kích cỡ.

Không giống như array, khi đã khai báo arraylist trong java thì nó có thể auto bố trí dung tích của nó khi bạn thêm hoặc bớt các phần tử trong mảng. Do vậy, 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 thành arraylists trong Java:

ArrayListvàlt;Typevàgt; arrayList= new ArrayListvàlt;>();

Ở giai đoạn này, Type trổ tài kiểu của một arraylist. Chẳng hạn,

// create Integer type arraylist

ArrayListvàlt;Integervàgt; arrayList = new ArrayListvàlt;>();

// create String type arraylist

ArrayListvàlt;Stringvàgt; arrayList = new ArrayListvàlt;>();

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

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

Chẳng hạn: Tạo ArrayList trong Java

Xem Thêm  Cách tạo Mô-đun Python, hướng dẫn đầy đủ - tạo mô-đun trong python

import java.util.ArrayList;

class Main {

public static void main(String[] args){

// create ArrayList

ArrayListvàlt;Stringvàgt; languages = new ArrayListvàlt;>();

// 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 chẳng hạn này, tôi đã hình thành một ArrayList có tên là languages

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

Cảnh báo: 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<Stringvàgt; danh sách = new ArrayListvàlt;>();

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

ArrayList class phân phối 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 hay được dùng:

  • Thêm các phần tử
  • Truy cập vào các phần tử
  • Biến đổ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 rẽ vào arraylist, bạn sử dụng method add() của ArrayList class. Chẳng hạn:

import java.util.ArrayList;

class Main {

public static void main(String[] args){

// create ArrayList

ArrayListvàlt;Stringvàgt; languages = new ArrayListvàlt;>();

// 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 chẳng hạn trên, tôi đã hình thành một ArrayList có tên là languages. Ở giai đoạn này, tôi sử dụng method add() để thêm các phần tử vào languages.

Hãy cảnh báo vào câu lệnh này,

languages.add(1, “JavaScript”);

Ở giai đoạn này, tôi đã sử dụng tham số chỉ số. Nó là một tham số tùy chọn giúp chỉ định địa điểm 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 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. Chẳng hạn:

import java.util.ArrayList;

class Main {

public static void main(String[] args) {

ArrayListvàlt;Stringvàgt; animals = new ArrayListvàlt;>();

// 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 chẳng hạn trên, tôi đã sử dụng method get() với tham số 1. Ở giai đoạn này, method này trả về phần tử ở chỉ số 1.

không chỉ thế, bạn cũng có thể truy cập vào các phần tử của ArrayList bằng cách dùng method iterator().

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

Để biến đổi phần tử của arraylist, bạn sử dụng method set() của lớp ArrayList. Chẳng hạn,

import java.util.ArrayList;

class Main {

public static void main(String[] args) {

ArrayListvàlt;Stringvàgt; languages = new ArrayListvàlt;>();

// add elements in the array danh sách

languages.add(“Java”);

languages.add(“Kotlin”);

languages.add(“C++”);

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

// change the element of the array danh sách

languages.set(2, “JavaScript”);

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

}

}

Đầu ra

ArrayList: [Java, Kotlin, C++]

Modified ArrayList: [Java, Kotlin, JavaScript]

Trong chẳng hạn trên, tôi đã hình thành một ArrayList có tên là languages. Hãy cảnh báo vào dòng

language.set(2, “JavaScript”);

Ở giai đoạn này, method set() biến đổ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. Chẳng hạn,

import java.util.ArrayList;

class Main {

public static void main(String[] args) {

ArrayListvàlt;Stringvàgt; animals = new ArrayListvàlt;>();

// add elements in the array danh sách

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

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

Bạn cũng có chuyên mục bỏ toàn bộ các phần tử ra khỏi arraylist cùng một lúc bằng cách dùng các method:

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

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

Kế tiếp, tôi sẽ giới thiệu tổng quan về lớp Vector & cách dùng nó, sự độc đáo giữa Vector class & ArrayList class & tại 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 thành các mảng có thể biến đổi kích cỡ. Nó cũng giống như ArrayList class.

Java Vector với ArrayList

Trong Java, cả ArrayList & Vector đều triển khai List interface & phân phối các chức năng giống nhau.

Bên cạnh đó, giữa chúng vẫn có một vài điểm nổi bật

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

Lý do là do khi một luồng đang truy cập vào một vector & đồng thời đó, một luồng khác cũng phấn đấu truy cập vào nó, một exception (ngoại lệ) có cái tên ConcurrentModificationException được tạo thành.

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

Bên cạnh đó, trong arraylist, các method lại không được ăn nhập hóa. Thay vào đó, nó sử dụng method Collections.synchronizedList() ăn nhập hóa toàn thể mục lục

Cảnh báo, chúng ta nên sử dụng ArrayList thay cho Vector vì Vector không an toàn & ít hiệu quả hơn.

Tạo Vector

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

Vectorvàlt;Typevàgt; vector = new Vectorvàlt;>();

Ở giai đoạn này, Type cho biết loại danh sách được link. Chẳng hạn,

// create Integer type linked danh sách

Vectorvàlt;Integervàgt; vector= new Vectorvàlt;>();

// create String type linked danh sách

Vectorvàlt;Stringvàgt; vector= new Vectorvàlt;>();

Methods của Vector

Vector class cũng phân phối các cách triển khai mảng có thể biến đổi kích cỡ của List interface (cũng giống như ArrayList class).

Xem Thêm  Định dạng ngày và giờ trong SQL Server bằng cách sử dụng hàm FORMAT - ngày giờ định dạng máy chủ sql

Hãy cùng tìm hiểu một số method thông dụng 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 địa điểm được chỉ định
  • addAll(vector) – thêm toàn bộ các phần tử của một vectơ vào một vectơ khác

Chẳng hạn,

import java.util.Vector;

class Main {

public static void main(String[] args) {

Vectorvàlt;Stringvàgt; mammals= new Vectorvàlt;>();

// Using the add() method

mammals.add(“Dog”);

mammals.add(“Horse”);

// Using index number

mammals.add(2, “Cat”);

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

// Using addAll()

Vectorvàlt;Stringvàgt; animals = new Vectorvàlt;>();

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ơ

Chẳng hạn,

import java.util.Iterator;

import java.util.Vector;

class Main {

public static void main(String[] args) {

Vectorvàlt;Stringvàgt; animals= new Vectorvàlt;>();

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()

Iteratorvàlt;Stringvàgt; 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 địa điểm đã được chỉ định
  • removeAll() – loại bỏ toàn bộ các phần tử
  • clear() – loại bỏ toàn bộ các phần tử. Method này hiệu quả hơn removeAll()

Chẳng hạn:

import java.util.Vector;

class Main {

public static void main(String[] args) {

Vectorvàlt;Stringvàgt; animals= new Vectorvàlt;>();

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 công thức vectơ khác

Method
Miêu tả tính năng

set()
biến đổi một phần tử của vectơ

size()
trả về kích cỡ của vectơ

toArray()
chuyển hóa vectơ thành một mảng

toString()
chuyển hóa vectơ thành chuỗi

contains()
tìm kiếm vectơ cho phần tử đã được chỉ định & 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 & các method của nó thông qua các chẳng hạn minh họa.

Java collections framework có một class có tên là Stack. Class này phân phối tính năng của cấu tạo dữ liệu ngăn xếp.

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

linkedlist trong java

Stack Implementation

Trong ngăn xếp (stack), các phần tử được lưu trữ & truy cập theo phương pháp 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

Tạo Stack

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

Stackvàlt;Typevàgt; stacks = new Stackvàlt;>();

Ở giai đoạn này, Type biểu thị loại của stack. Chẳng hạn,

// Create Integer type stack

Stackvàlt;Integervàgt; stacks = new Stackvàlt;>();

// Create String type stack

Stackvàlt;Stringvàgt; stacks = new Stackvàlt;>();

Stack Methods

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

Bên cạnh những method đó, Stack class còn tồn tại thêm 5 method độc đáo 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(). Chẳng hạn:

import java.util.Stack;

class Main {

public static void main(String[] args) {

Stackvàlt;Stringvàgt; animals= new Stackvàlt;>();

// 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) {

Stackvàlt;Stringvàgt; animals= new Stackvàlt;>();

// 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. Chẳng hạn:

import java.util.Stack;

class Main {

public static void main(String[] args) {

Stackvàlt;Stringvàgt; animals= new Stackvàlt;>();

// 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ề địa điểm của phần tử nằm trên cùng của stack. Chẳng hạn:

import java.util.Stack;

class Main {

public static void main(String[] args) {

Stackvàlt;Stringvàgt; animals= new Stackvàlt;>();

 

// 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 soát xem một stack có rỗng hay không, bạn cần sử dụng method empty(). Chẳng hạn:

import java.util.Stack;

class Main {

public static void main(String[] args) {

Stackvàlt;Stringvàgt; animals= new Stackvàlt;>();

// Add elements to Stack

animals.push(“Dog”);

animals.push(“Horse”);

animals.push(“Cat”);

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

// Test 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 phân phối cách triển khai trực tiếp cấu tạo dữ liệu ngăn xếp. Bên cạnh đó, các Chuyên Viên lời khuyên 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 tạo dữ liệu ngăn xếp trong Java.

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

Nếu bạn vẫn chưa hiểu rõ về những đề tài trên & có mong đợi học hỏi, còn băn khoăn gì mà không gia nhập khóa học Java online của Ironhack viet nam!

Viết một bình luận