Nội dung
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ó:
- Interface và các cách triển khai của nó, chính xác là các lớp (class)
- 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.
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.
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.
- 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.
- 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.
- 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
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
- 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
- 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.
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ử
- 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()
- 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().
- 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.
- 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.
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.
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!