當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java AbstractList用法及代碼示例


AbstractListJava 中的類是Java集合框架並實施采集接口AbstractCollection。此類提供了以下框架的實現List Interface接口,以最大限度地減少實現該接口所需的工作量隨機訪問數據存儲(例如數組)。對於順序訪問數據(例如鏈表),AbstractSequentialList應優先使用此類。

要實現一個不可修改的列表,隻需擴展AbstractList類並實現get(int) size()方法。要實現可修改的列表,為此還需要重寫 set(int index, E element) 方法(否則會引發 UnsupportedOperationException)。如果列表是 variable-size,則應覆蓋 add(int, E ) 和 remove(int) 方法。

類層次結構:

AbstractList-in-Java

聲明:

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>

where E is the type of elements maintained by this collection.

構造函數:protected AbstractList() - 默認構造函數,但受保護,不允許創建 AbstractList 對象。

AbstractList<E> al = new ArrayList<E>();

示例 1:AbstractList 是一個Abstract,因此應該為其分配一個子類的實例,例如ArrayList,LinkedList, 或者Vector

Java


// Java code to illustrate AbstractList
import java.util.*;
public class AbstractListDemo {
    public static void main(String args[])
    {
        // Creating an empty AbstractList
        AbstractList<String> list = new ArrayList<String>();
        // Use add() method to add elements in the list
        list.add("Geeks");
        list.add("for");
        list.add("Geeks");
        list.add("10");
        list.add("20");
        // Displaying the AbstractList
        System.out.println("AbstractList:" + list);
    }
}
輸出
AbstractList:[Geeks, for, Geeks, 10, 20]

示例 2:

Java


// Java code to illustrate 
// methods of AbstractCollection 
import java.util.*; 
public class AbstractListDemo { 
    public static void main(String args[]) 
    { 
        // Creating an empty AbstractList 
        AbstractList<String> 
            list = new LinkedList<String>(); 
        // Using add() method to add elements in the list 
        list.add("Geeks"); 
        list.add("for"); 
        list.add("Geeks"); 
        list.add("10"); 
        list.add("20"); 
        // Output the list 
        System.out.println("AbstractList: " + list); 
        // Remove the head using remove() 
        list.remove(3); 
        // Print the final list 
        System.out.println("Final AbstractList: " + list); 
        // getting the index of last occurrence 
        // using lastIndexOf() method 
        int lastindex = list.lastIndexOf("A"); 
        // printing the Index 
        System.out.println("Last index of A : "
                        + lastindex); 
    } 
} 
輸出
AbstractList: [Geeks, for, Geeks, 10, 20]
Final AbstractList: [Geeks, for, Geeks, 20]
Last index of A : -1

Methods in AbstractList

METHOD

DESCRIPTION

add(int index, E element) 在此列表中的指定位置插入指定元素(可選操作)。
AbstractList add(E ele) 將指定元素追加到此列表的末尾(可選操作)。

AbstractList addAll()

AbstractList addAll()

將指定集合中的所有元素插入到此列表的指定位置(可選操作)。
AbstractList clear() 從此列表中刪除所有元素(可選操作)。
AbstractList equals() 比較指定對象與此列表是否相等。
AbstractList get() 返回此列表中指定位置的元素。
AbstractList hashCode() 返回此列表的哈希碼值。
AbstractList indexOf() 返回此列表中指定元素第一次出現的索引,如果此列表不包含該元素,則返回 -1。
AbstractList iterator() 按正確順序返回此列表中元素的迭代器。
AbstractList lastIndexOf() 返回此列表中最後一次出現的指定元素的索引,如果此列表不包含該元素,則返回 -1。
AbstractList listIterator() 返回此列表中元素的列表迭代器(按正確的順序)。
AbstractList listIterator() 返回列表中元素的列表迭代器(按正確的順序),從列表中的指定位置開始。
AbstractList remove() 刪除此列表中指定位置的元素(可選操作)。
刪除範圍(int fromIndex,int toIndex) 從此列表中刪除索引介於 fromIndex(包含)和 toIndex(不包含)之間的所有元素。
AbstractList set() 將此列表中指定位置的元素替換為指定元素(可選操作)。
AbstractList subList() 返回此列表中指定的 fromIndex(包含)和 toIndex(不包含)之間的部分的視圖。

Methods declared in class java.util.AbstractCollection

METHOD

DESCRIPTION

AbstractCollection addAll() 將指定集合中的所有元素添加到此集合中(可選操作)。
AbstractCollection contains() 如果此集合包含指定元素,則返回 true。
AbstractCollection containsAll() 如果此集合包含指定集合中的所有元素,則返回 true。
AbstractCollection isEmpty() 如果此集合不包含任何元素,則返回 true。
AbstractCollection remove() 從此集合中刪除指定元素的單個實例(如果存在)(可選操作)。
AbstractCollection removeAll() 刪除指定集合中也包含的所有該集合的元素(可選操作)。
AbstractCollection retainAll() 僅保留此集合中包含在指定集合中的元素(可選操作)。
AbstractCollection toArray() 返回一個包含此集合中所有元素的數組。
AbstractCollection toArray() 返回一個包含該集合中所有元素的數組;返回數組的運行時類型是指定數組的運行時類型。
AbstractCollection toString() 返回此集合的字符串表示形式。

Methods declared in interface java.util.Collection

METHOD

DESCRIPTION

parallelStream() 返回一個可能並行的 Stream 並以此集合作為其源。
removeIf(Predicate<? super E> 過濾器) 刪除此集合中滿足給定謂詞的所有元素。
stream() 返回以此集合作為源的順序 Stream。
toArray(IntFunction<T[]> 生成器)

返回一個包含此集合中所有元素的數組,使用

提供了生成器函數來分配返回的數組。

接口 java.util.List 中聲明的方法

METHOD

DESCRIPTION

List addAll()

將指定集合中的所有元素按以下順序附加到此列表的末尾

它們由指定集合的迭代器返回(可選操作)。

List contains() 如果此列表包含指定元素,則返回 true。
List containsAll() 如果此列表包含指定集合的所有元素,則返回 true。
List isEmpty() 如果此列表不包含任何元素,則返回 true。
remove(int index) 刪除此列表中指定位置的元素(可選操作)。
移除全部(集合<?> c) 從此列表中刪除指定集合中包含的所有元素(可選操作)。
ReplaceAll(UnaryOperator<E> 運算符) 將此列表中的每個元素替換為將運算符應用於該元素的結果。
List retainAll() 僅保留此列表中指定集合中包含的元素(可選操作)。
List size() 返回此列表中的元素數量。
排序(比較器<? super E> c) 根據指定比較器產生的順序對此列表進行排序。
spliterator() 在此列表中的元素上創建一個 Spliterator。
toArray() 返回一個數組,其中按正確順序(從第一個元素到最後一個元素)包含此列表中的所有元素。
toArray(T[] a)

返回一個數組,其中按正確順序(從第一個元素到最後一個元素)包含此列表中的所有元素

;返回數組的運行時類型是指定數組的運行時類型。

Java 中的 AbstractList 類是一個抽象類,提供 List 接口的骨架實現。它是 Java Collections Framework 的一部分,旨在通過 ArrayList 和 LinkedList 等具體列表實現進行子類化。

以下是如何在 Java 中使用 AbstractList 類的示例:

Java


import java.util.AbstractList;
import java.util.List;
public class MyList extends AbstractList<Integer> {
    private int size;
    public MyList(int size) {
        this.size = size;
    }
    @Override
    public Integer get(int index) {
        return index;
    }
    @Override
    public int size() {
        return size;
    }
    public static void main(String[] args) {
        List<Integer> list = new MyList(5);
        for (int i : list) {
            System.out.println(i);
        }
    }
}
輸出
0
1
2
3
4

通過擴展AbstractList類,隻需要實現get和size方法,就提供了列表的基本實現。與從頭開始實現 List 接口相比,這可以節省大量時間和代碼。

在Java中使用AbstractList的優點:

  1. 減少代碼重複:通過使用 AbstractList 類作為基礎,您可以減少實現列表所需編寫的代碼量,因為許多常見方法已經為您實現了。
  2. 一致的行為:由於 AbstractList 類實現了 List 接口中的許多方法,因此您可以確保您的實現將與其他列表實現(例如 ArrayList 和 LinkedList)具有一致的行為。

在Java中使用AbstractList的缺點:

  1. 函數有限:由於 AbstractList 類是一個抽象類,因此它僅提供列表的基本實現。您可能需要實現其他方法來提供應用程序所需的完整函數。
  2. 增加複雜性:通過擴展 AbstractList 類,您將增加代碼的複雜性,因為您依賴基類來提供某些行為。

參考書:

Naftalin 和 Wadler 編寫的 “Java Collections” 是一本了解 Java 集合框架和 AbstractList 的很好的參考書。本書全麵介紹了 Java 集合框架(包括 AbstractList),並包含許多示例和練習來幫助您了解如何有效地使用這些類。

參考:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/AbstractList.html



相關用法


注:本文由純淨天空篩選整理自RishabhPrabhu大神的英文原創作品 AbstractList in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。