[Tự học Java] LinkedList trong Java » https://final-blade.com

Trong bài này, tất cả chúng ta sẽ tìm hiểu và khám phá về class LinkedList một cách chi tiết cụ thể cùng với đó là rất nhiều ví dụ .

Class LinkedList của collections framework trong Java cung cấp các chức năng của cấu trúc dữ liệu LinkedList.

Các interface được triển khai bởi class LinkedList

Tóm Tắt

1. Triển khai LinkedList trong Java

Class LinkedList trong Java tiến hành list link đôi .

Mỗi thành phần trong một LinkedList được gọi là một nút. Nó gồm có 3 trường :

  • Prev – Lưu địa chỉ của phần tử trước trong list. Trả về null đối với các phần tử đầu tiên.
  • Next – Lưu trữ địa chỉ của phần tử tiếp theo trong danh sách. Trả về null đối với các phần tử cuối cùng.
  • Data – Lưu trữ dữ liệu thực.

Các thành phần trong LinkedList không được tàng trữ theo trình tự. Thay vào đó, chúng nằm rải rác và được liên kết trải qua những link ( Prev và Next ) .

Ở đây tất cả chúng ta có 3 thành phần trong một LinkedList .

  • Dog – đây là phần tử đầu tiên, phần tử của địa chỉ trước là null và phần tử của địa chỉ tiếp theo là Cat
  • Cat – đây là phần tử thứ hai, phần tử của địa chỉ trước là  Dog và phần tử của địa chỉ tiếp theo là  Cow 
  • Cow – đây là phần tử cuối cùng, phần tử địa chỉ trước là  Cat và phần tử của địa chỉ tiếp theo là  null

2. Tạo một LinkedList

Đây là cách tất cả chúng ta hoàn toàn có thể tạo những LinkedList trong Java :

LinkedList linkedList = new LinkedList<>();

Ở đây, Type là kiểu của LinkedList. Ví dụ ,

// create Integer type linked list
LinkedList linkedList = new LinkedList<>();

// create String type linked list
LinkedList linkedList = new LinkedList<>();

3. Tạo LinkedList bằng cách sử dụng Interface

Hãy lấy một ví dụ .

List animals1 = new LinkedList<>();

Ở đây tất cả chúng ta đã khai báo một LinkedList animals1, bằng cách sử dụng List interface. LinkedList chỉ hoàn toàn có thể truy vấn những hàm của List interface .
Hãy lấy một ví dụ nữa .

Queue animals2 = new LinkedList<>();
Deque animals3 = new LinkedList<>();

Ở đây, animals2 hoàn toàn có thể truy vấn những hàm của Queue interface .
Tuy nhiên, animals3 chỉ hoàn toàn có thể truy vấn những hàm của Dequevà Queue interface. Đó là chính do Deque là một subinterface của Queue .

4. Các hàm của LinkedList

LinkedList cung ứng những hàm khác nhau được cho phép tất cả chúng ta thực thi những hoạt động giải trí khác nhau trong LinkedList .

5. Thêm các phần tử vào LinkedList

5.1 Thêm phần tử: sử dụng hàm add ()

Để thêm một thành phần ( nút ) vào cuối LinkedList, tất cả chúng ta sử dụng hàm add ( ). Ví dụ ,

import java.util.LinkedList;

class Main {
    public static void main(String[] args){
        LinkedList animals = new LinkedList<>();

        // Add elements to LinkedList
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("LinkedList: " + animals);
    }
}

Kết quả

LinkedList: [Dog, Cat, Horse]

5.2 Thêm phần tử: sử dụng số chỉ

Chúng ta cũng hoàn toàn có thể thêm những thành phần LinkedList bằng cách sử dụng những chỉ số. Ví dụ ,

import java.util.LinkedList;

class Main {
    public static void main(String[] args){
        LinkedList animals = new LinkedList<>();

        // Add elements using indexes
        animals.add(0,"Dog");
        animals.add(1,"Cat");
        animals.add(2,"Horse");

        System.out.println("LinkedList: " + animals);
    }
}

Kết quả

LinkedList: [Dog, Cat, Horse]

5.3 Thêm phần tử từ LinkedList này sang LinkedList khác

Để thêm tổng thể những thành phần từ LinkedList này sang LinkedList khác, tất cả chúng ta sử dụng hàm addAll ( ). Ví dụ ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.LinkedList;

class Main {
    public static void main(String[] args){
        LinkedList mammals = new LinkedList<>();

        mammals.add("Dog");
        mammals.add("Cat");
        mammals.add("Horse");
        System.out.println("Mammals: " + mammals);

        LinkedList animals = new LinkedList<>();
        animals.add("Crocodile");

        // Add all elements of mammals in animals
        animals.addAll(mammals);
        System.out.println("Animals: " + animals);
    }
}

Kết quả

Mammals: [Dog, Cat, Horse]
Animals: [Crocodile, Dog, Cat, Horse]

5.4 Thêm phần tử: sử dụng hàm listIterator ()

Chúng ta cũng hoàn toàn có thể sử dụng hàm listsIterator ( ) để thêm những thành phần vào LinkedList. Để sử dụng nó, tất cả chúng ta phải nhập vào gói java.util. ListIterator. Ví dụ ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.ArrayList;
import java.util.ListIterator;

class Main {
    public static void main(String[] args) {
        ArrayList animals= new ArrayList<>();

        // Creating an object of ListIterator
        ListIterator listIterate = animals.listIterator();
        listIterate.add("Dog");
        listIterate.add("Cat");

        System.out.println("LinkedList: " + animals);
    }
}

Kết quả

LinkedList: [Dog, Cat]

6. Truy cập tới các phần tử trong LinkedList

6.1 Truy cập tới các phần tử: sử dụng hàm get ()

Để truy vấn một thành phần từ LinkedList, tất cả chúng ta hoàn toàn có thể sử dụng hàm get ( ). Ví dụ ,

import java.util.LinkedList;

class Main {
    public static void main(String[] args) {
        LinkedList animals= new LinkedList<>();

        // Add elements in the linked list
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");
        System.out.println("LinkedList: " + animals);

        // Get the element from the linked list
        String str = animals.get(1);
        System.out.print("Element at index 1: " + str);
    }
}

Kết quả

LinkedList: [Dog, Horse, Cat]
Element at index 1: Horse

6.2 Truy cập các phần tử: sử dụng hàm iterator ()

Để lặp lại những thành phần của LinkedList, tất cả chúng ta hoàn toàn có thể sử dụng iterator ( ) hàm. Chúng ta phải nhập gói java.util. Iterator để sử dụng hàm này. Ví dụ ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.LinkedList;
import java.util.Iterator;

class Main {
    public static void main(String[] args) {
        LinkedList animals= new LinkedList<>();

        // Add elements in LinkedList
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");

        // Creating an object of Iterator
        Iterator iterate = animals.iterator();
        System.out.print("LinkedList: ");

        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

Kết quả

LinkedList: Dog, Cat, Horse,

Ở đây ,

  • Hàm hasNext()- trả về true nếu có phần tử tiếp theo
  • Hàm next() – trả về phần tử tiếp theo

Để tìm hiểu và khám phá thêm về Iterator, hãy truy vấn Iterator Interface trong Java .

6.3 Truy cập các phần tử: sử dụng hàm listIterator ()

Chúng ta cũng hoàn toàn có thể sử dụng hàm listIterator ( ) để lặp lại những thành phần của LinkedList. Để sử dụng hàm này, tất cả chúng ta phải nhập gói java.util. ListIterator .
Hàm listsIterator ( ) được yêu thích hơn trong LinkedList. Đó là chính do những đối tượng người tiêu dùng listIterator ( ) cũng hoàn toàn có thể lặp theo chiều lại. Ví dụ ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.LinkedList;
import java.util.ListIterator;

class Main {
    public static void main(String[] args) {
        LinkedList animals= new LinkedList<>();

        // Add elements in LinkedList
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");

        // Create an object of ListIterator
        ListIterator listIterate = animals.listIterator();
        System.out.print("LinkedList: ");

        while(listIterate.hasNext()) {
            System.out.print(listIterate.next());
            System.out.print(", ");
        }

        // Iterate backward
        System.out.print("\nReverse LinkedList: ");

        while(listIterate.hasPrevious()) {
            System.out.print(listIterate.previous());
            System.out.print(", ");
        }
    }
}

Kết quả

LinkedList: Dog, Horse, Cat,
Reverse LinkedList: Cat, Horse, Dog,

Ở đây ,

  • Hàm hasNext() trả về true nếu có phần tử tiếp theo
  • Hàm next() trả về phần tử tiếp theo
  • Hàm hasPrevious() trả về true nếu có các phần tử trước
  • Hàm previous() trả về phần tử trước

Để khám phá thêm về ListIterator, hãy truy vấn ListIterator Interface trong Java .

6.4 Tìm kiếm các phần tử trong LinkedList

6.4.1 Tìm kiếm các phần tử: sử dụng Hàm contains ()

Để kiểm tra xem LinkedList có chứa một thành phần đơn cử hay không, tất cả chúng ta sử dụng hàm contains ( ). Ví dụ ,

import java.util.LinkedList;

class Main {
    public static void main(String[] args) {
        LinkedList animals= new LinkedList<>();

        // Add elements in the linked list
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");
        System.out.println("LinkedList: " + animals);

        // Checks if Dog is in the linked list
        if(animals.contains("Dog")) {
            System.out.println("Dog is in LinkedList.");
        }
    }
}

Kết quả

LinkedList: [Dog, Horse, Cat]
Dog is in LinkedList.

6.4.2 Tìm kiếm các phần tử: sử dụng Hàm indexOf ()

  • indexOf() – trả về chỉ số xuất hiện đầu tiên của một phần tử
  • lastIndexOf() – trả về chỉ số của lần xuất hiện cuối cùng của một phần tử

Ví dụ,

import java.util.LinkedList;

class Main {
    public static void main(String[] args) {
        LinkedList animals= new LinkedList<>();

        // Add elements in the linked list
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");
        animals.add("Dog");
        System.out.println("LinkedList: " + animals);

        // First Occurrence of Dog
        int index1 = animals.indexOf("Dog");
        System.out.println("First Occurrence of Dog: " + index1);

        // Last Occurrence of Dog
        int index2 = animals.lastIndexOf("Dog");
        System.out.println("Last Occurrence of Dog: " + index2);
    }
}

Kết quả

LinkedList: [Dog, Horse, Cat, Dog]
First Occurrence of Dog: 0
Last Occurrence of Dog: 3

Lưu ý : Cả hai hàm indexOf ( ) và lastIndexOf ( ) đều trả về – 1 nếu không tìm thấy thành phần đã chỉ định .

7. Thay đổi các phần tử trong LinkedList

7.1 Thay đổi phần tử: sử dụng hàm set ()

Để đổi khác những thành phần của LinkedList, tất cả chúng ta hoàn toàn có thể sử dụng hàm set ( ). Ví dụ ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.LinkedList;

class Main {
    public static void main(String[] args) {
        LinkedList animals= new LinkedList<>();

        // Add elements in the linked list
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");
        animals.add("Dog");
        System.out.println("LinkedList: " + animals);

        // Change elements at index 3
        animals.set(3, "Zebra");
        System.out.println("New LinkedList: " + animals);
    }
}

Kết quả

LinkedList: [Dog, Horse, Cat, Dog]
New LinkedList: [Dog, Horse, Cat, Zebra]

7.2 Thay đổi phần tử: sử dụng hàm listIterator ()

Chúng ta cũng hoàn toàn có thể biến hóa những thành phần trong LinkedList bằng cách sử dụng hàm listIterator ( ). Ví dụ ,

import java.util.ArrayList;
import java.util.ListIterator;

class Main {
    public static void main(String[] args) {
        ArrayList animals= new ArrayList<>();

        // Add elements
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("LinkedList: " + animals);

        // Creating an object of ListIterator
        ListIterator listIterate = animals.listIterator();
        listIterate.next();

        // Change element returned by next()
        listIterate.set("Cow");
        System.out.println("New LinkedList: " + animals);
    }
}

Kết quả

LinkedList: [Dog, Cat, Horse]
New LinkedList: [Cow, Cat, Horse]

8. Xóa các phần tử khỏi LinkedList

8.1 Xóa phần tử: sử dụng hàm remove ()

Để xóa một thành phần khỏi LinkedList, tất cả chúng ta hoàn toàn có thể sử dụng hàm remove ( ). Ví dụ ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.LinkedList;

class Main {
    public static void main(String[] args) {
        LinkedList animals= new LinkedList<>();

        // Add elements in LinkedList
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");
        animals.add("Zebra");
        System.out.println("LinkedList: " + animals);

        // Remove elements from index 1
        String str = animals.remove(1);
        System.out.println("Removed Element: " + str);

        System.out.println("New LinkedList: " + animals);
    }
}

Kết quả

LinkedList : [Dog, Horse, Cat, Zebra]
Removed Element: Horse
New LinkedList: [Dog, Cat, Zebra]

8.2 Xóa phần tử: sử dụng Hàm listIterator ()

Chúng ta cũng hoàn toàn có thể xóa những thành phần khỏi LinkedList bằng hàm listsIterator ( ). Ví dụ ,

import java.util.ArrayList;
import java.util.ListIterator;

class Main {
    public static void main(String[] args) {
        ArrayList animals= new ArrayList<>();

        // Add elements
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("LinkedList: " + animals);

        // Creating an object of ListIterator
        ListIterator listIterate = animals.listIterator();
        listIterate.next();

        // Remove element returned by next()
        listIterate.remove();
        System.out.println("New LinkedList: " + animals);
    }
}

Kết quả

LinkedList: [Dog, Cat, Horse]
New LinkedList: [Cat, Horse]

8.3 Xóa các phần tử: sử dụng Hàm Clear ()

Để xóa tổng thể những thành phần khỏi LinkedList, tất cả chúng ta sử dụng hàm clear ( ). Ví dụ ,

import java.util.LinkedList;

class Main {
    public static void main(String[] args) {
        LinkedList animals= new LinkedList<>();

        // Add elements in LinkedList
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("LinkedList: " + animals);

        // Remove all the elements
        animals.clear();
        System.out.println("New LinkedList: " + animals);
    }
}

Kết quả

LinkedList: [Dog, Cat, Horse]
New LinkedList: []

Lưu ý : Chúng ta cũng hoàn toàn có thể sử dụng hàm removeAll ( ) để vô hiệu toàn bộ những thành phần. Tuy nhiên, hàm clear ( ) được cho là hiệu suất cao hơn hàm removeAll ( ) .

8.4 Xóa phần tử: sử dụng hàm remove If ()

Chúng ta cũng hoàn toàn có thể xóa những thành phần khỏi LinkedList nếu chúng thỏa mãn nhu cầu một điều kiện kèm theo nhất định. Để làm điều này, tất cả chúng ta sử dụng hàm removeIf ( ). Ví dụ ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.LinkedList;

class Main {
    public static void main(String[] args) {
        LinkedList animals= new LinkedList<>();

        // Add elements in LinkedList
        animals.add(2);
        animals.add(3);
        animals.add(4);
        animals.add(5);
        System.out.println("LinkedList: " + animals);

        // Remove all elements less than 4
        animals.removeIf((Integer i)->i < 4);
        System.out.println("New LinkedList: " + animals);

       /** Here we have used the lambda expression
         * For now just remember
         * parameter inside removeIf() is a condition
         */
    }
}

Kết quả

LinkedList: [2, 3, 4, 5]
New LinkedList: [4, 5]

Lưu ý : ( Integer i ) -> i < 4 là một biểu thức lambda. Để khám phá về biểu thức lambda, hãy truy vấn Biểu thức Lambda của Java .

9. LinkedList với chức năng là Deque và Queue

Vì class LinkedList cũng tiến hành Queue interface và Deque interface, nó cũng hoàn toàn có thể triển khai những hàm của những interface này. Dưới đây là 1 số ít hàm thường được sử dụng :

9.1 Hàm addFirst () và addLast ()

  • addFirst() – thêm phần tử được chỉ định vào đầu LinkedList
  • addLast() – thêm phần tử được chỉ định vào cuối LinkedList

Ví dụ ,

import java.util.LinkedList;
import java.util.Deque;

class Main {
    public static void main(String[] args){
        Deque animals = new LinkedList<>();

        // Add element at starting of LinkedList
        animals.addFirst("Cow");
        animals.addFirst("Dog");
        animals.addFirst("Cat");
        System.out.println("LinkedList: " + animals);

        // Add elements at the end of LinkedList
        animals.addLast("Zebra");
        System.out.println("New LinkedList: " + animals);
    }
}

Kết quả

LinkedList: [Cat, Dog, Cow]
New LinkedList: [Cat, Dog, Cow, Zebra]

9.2 Hàm getFirst () và getLast ()

  • getFirst() – trả về phần tử đầu tiên
  • getLast() – trả về phần tử cuối cùng

Ví dụ ,

import java.util.LinkedList;
import java.util.Deque;

class Main {
    public static void main(String[] args) {
        Deque animals= new LinkedList<>();

        // Add elements in the linked list
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");
        System.out.println("LinkedList: " + animals);

        // Get the first element from the linked list
        String str1 = animals.getFirst();
        System.out.println("First Element: " + str1);

        // Get the last element from the linked list
        String str2 = animals.getLast();
        System.out.println("Last Element: " + str2);
    }
}

Kết quả

LinkedList: [Dog, Horse, Cat]
First Element: Dog
Last Element: Cat

9.3 Hàm removeFirst () và removeLast ()

  • removeFirst() – loại bỏ phần tử đầu tiên
  • removeLast() – loại bỏ phần tử cuối cùng

Ví dụ ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.LinkedList;
import java.util.Deque;

class Main {
    public static void main(String[] args) {
        Deque animals= new LinkedList<>();

        // Add elements in LinkedList
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");
        System.out.println("LinkedList: " + animals);

        // Remove the first element from LinkedList
        String str1 = animals.removeFirst();
        System.out.println("Removed Element: " + str1);

        // Remove the last element from LinkedList
        String str2 = animals.removeLast();
        System.out.println("Removed Element: " + str2);

        System.out.println("New LinkedList: " + animals);
    }
}

Kết quả

LinkedList: [Dog, Horse, Cat]
Removed Element: Dog
Removed Element: Cat
New LinkedList: [Horse]

9.4 hàm peek ()

Hàm peek ( ) trả về thành phần tiên phong ( đầu ) của LinkedList. Ví dụ ,

import java.util.LinkedList;
import java.util.Queue;

class Main {
    public static void main(String[] args) {
        Queue animals= new LinkedList<>();

        // Add elements in LinkedList
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");
        System.out.println("LinkedList: " + animals);

        // Access the first element of LinkedList
        String str = animals.peek();
        System.out.println("Element Accessed: " + str);
        System.out.println("New LinkedList: " + animals);
    }
}

Kết quả

LinkedList: [Dog, Horse, Cat]
Element Accessed: Dog
New LinkedList: [Dog, Horse, Cat]

9.5 hàm poll()

Hàm poll ( ) trả về và vô hiệu thành phần tiên phong trong LinkedList. Ví dụ ,

import java.util.LinkedList;
import java.util.Queue;

class Main {
    public static void main(String[] args) {
        Queue animals= new LinkedList<>();

        // Add elements in LinkedList
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");
        System.out.println("LinkedList: " + animals);

        // Returns and removes the first element
        String str = animals.poll();
        System.out.println("Removed Element: " + str);
        System.out.println("New LinkedList: " + animals);
    }
}

Kết quả

LinkedList: [Dog, Horse, Cat]
Removed Element: Dog
New LinkedList: [Horse, Cat]

9.6 Hàm offer()

Hàm offer ( ) bổ trợ thêm những thành phần đơn cử ở phần cuối của LinkedList. Ví dụ ,

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.LinkedList;
import java.util.Queue;

class Main {
    public static void main(String[] args) {
        Queue animals= new LinkedList<>();

        // Add elements in LinkedList
        animals.add("Dog");
        animals.add("Horse");
        System.out.println("LinkedList: " + animals);

        // Adds element at the end of LinkedList
        animals.offer("Cat");
        System.out.println("New LinkedList: " + animals);
    }
}

Kết quả

LinkedList: [Dog, Horse]
New LinkedList: [Dog, Horse, Cat]

10. Lặp qua một LinkedList

10.1. Sử dụng vòng lặp forEach

import java.util.LinkedList;

class Main {
    public static void main(String[] args) {
        // Creating a linked list
        LinkedList animals = new LinkedList<>();
        animals.add("Cow");
        animals.add("Cat");
        animals.add("Dog");
        System.out.println("LinkedList: " + animals);

        // Using forEach loop
        System.out.println("Accessing linked list elements:");
        for(String animal: animals) {
            System.out.print(animal);
            System.out.print(", ");
        }
    }
}

Kết quả

LinkedList: [Cow, Cat, Dog]
Accessing linked list elements:
Cow, Cat, Dog,

10.2. Sử dụng vòng lặp for

import java.util.LinkedList;

class Main {
    public static void main(String[] args) {
        // Creating a linked list
        LinkedList animals = new LinkedList<>();
        animals.add("Cow");
        animals.add("Cat");
        animals.add("Dog");
        System.out.println("LinkedList: " + animals);

        // Using for loop
        System.out.println("Accessing linked list elements:");
        for(int i=0; i < animals.size(); i++) {
            System.out.print(animals.get(i));
            System.out.print(", ");
        }
    }
}

Kết quả

LinkedList: [Cow, Cat, Dog]
Accessing linked list elements:
Cow, Cat, Dog,

Trong cả hai ví dụ trên, tất cả chúng ta đã truy vấn những thành phần riêng không liên quan gì đến nhau của một LinkedList bằng những vòng lặp .

10.3. Sử dụng hàm iterator ()

Chúng ta hoàn toàn có thể sử dụng hàm iterator ( ) để truy vấn những thành phần của LinkedList. Để sử dụng hàm này, tất cả chúng ta phải nhập gói java.util. Iterator .

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.LinkedList;
import java.util.Iterator;

class Main {
    public static void main(String[] args) {
        // Creating a linked list
        LinkedList animals = new LinkedList<>();
        animals.add("Cow");
        animals.add("Cat");
        animals.add("Dog");
        System.out.println("LinkedList: " + animals);

        // Using the iterator() method
        System.out.println("LinkedList using the iterator() method:");
        Iterator iterate = animals.iterator();
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

Kết quả

LinkedList: [Cow, Cat, Dog]
LinkedList using the iterator() method:
Cow, Cat, Dog,

11. LinkedList và ArrayList

Cả LinkedList và ArrayList đều tiến hành List interface của Collections framework. Tuy nhiên, có 1 số ít sự độc lạ giữa chúng .

LinkedList ArrayList
Lưu trữ 3 giá trị ( địa chỉ trước, dữ liệu và địa chỉ tiếp theo ) ở một vị trí Lưu trữ một giá trị trong một vị trí
Triển khai danh sách liên kết đôi Triển khai mảng có thể thay đổi kích thước
Khi một phần tử mới được thêm vào, địa chỉ prev và next sẽ thay đổi Khi một phần tử mới được thêm vào, tất cả các phần tử sau vị trí đó được thay đổi
Để truy cập một phần tử, chúng ta cần lặp từ đầu đến phần tử đó Có thể truy cập ngẫu nhiên các phần tử bằng cách sử dụng các chỉ mục.

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!