天天看點

固定長度的List

Arrays工具類裡提供了asList(Object... a)方法,該方法可以把一個數組、或指定個數的對象轉換成一個List集合,這個List集合既不是ArrayList實作類的執行個體,也不是Vector實作類的執行個體,而是Arrays的内部類ArrayList的執行個體。

Arrays.ArrayList是一個固定長度的List集合,程式隻能周遊通路該集合裡的元素,不可增加、删除該集合裡的元素 。

1 代碼示例

import java.util.*;

public class FixedSizeList
{
	public static void main(String[] args)
	{
		List fixedList = Arrays.asList("PPT完全自學手冊", "Windows API");
		// 擷取fixedList的實作類,将輸出Arrays$ArrayList
		System.out.println(fixedList.getClass());
		// 使用方法引用周遊集合元素
		fixedList.forEach(System.out::println);
		// 試圖增加、删除元素都會引發UnsupportedOperationException異常
		fixedList.add("黑客攻防");
		fixedList.remove("Windows API");
	}
}           

 2 運作結果

class java.util.Arrays$ArrayList

PPT完全自學手冊

Windows API

Exception in thread "main" java.lang.UnsupportedOperationException

        at java.util.AbstractList.add(Unknown Source)

        at java.util.AbstractList.add(Unknown Source)

        at FixedSizeList.main(FixedSizeList.java:14)

3 代碼分析

代碼最後兩行對于普通的List集合完全正常,但如果試圖通過這兩個方法來增加,删除Arrays.ArrayList集合中的元素,将會引發異常。但會在運作倒數第2行時引發UnsupportedOperationException異常。