Java 集合 List Arrays.asList

 參考連接:阿里巴巴Java開發手冊終極版v1.3.0java

【強制】使用工具類 Arrays.asList()把數組轉換成集合時,不能使用其修改集合相關的方
法,它的 add/remove/clear 方法會拋出 UnsupportedOperationException 異常。
說明:asList 的返回對象是一個 Arrays 內部類,並無實現集合的修改方法。Arrays.asList
體現的是適配器模式,只是轉換接口,後臺的數據還是數組。
 String[] str = new String[] { "you", "wu" };
 List list = Arrays.asList(str);
第一種狀況:list.add("yangguanbao"); 運行時異常。
第二種狀況:str[0] = "gujin"; 那麼 list.get(0)也會隨之修改。

使用Array.asList()初始化一個List集合,就不能再添加新的元素,由於初始化的是一個固定大小的數組,來看Arrays源碼。數組

List<String> seasons = Arrays.asList("Spring", "Summer", "Fall");
seasons.add("Winter");
System.out.println("seasons:"+seasons.toString());

運行結果:工具

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(Unknown Source)
	at java.util.AbstractList.add(Unknown Source)
	at com.jerry.entity.ListDemo.main(ListDemo.java:10)

在Java 7之後,實現集合裏面沒必要寫明具體的元素類型。code

ArrayList的兩種用法:對象

package com.jerry.entity;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class ListDemo {

	public static void main(String[] args) {
		List<String> seasons = Arrays.asList("Spring", "Summer", "Fall");
//		seasons.add("Winter"); // throw UnsupportedOperationException
		System.out.println("seasons:"+seasons.toString());
		
		List<String> seasons2 = new ArrayList<>(seasons);
		seasons2.add("Winter");
		System.out.println("seasons2:"+seasons2.toString());
		
		List<String> seasons3 = new ArrayList<>();
		seasons3.add("Spring");
		seasons3.add("Summer");
		seasons3.add("Fall");
		seasons3.add("Winter");
		System.out.println("seasons3:"+seasons3.toString());
		
		// java 8
		List<String> seasons4 = Stream.of("Spring", "Summer", "Fall").collect(Collectors.toList());
		System.out.println("seasons4:"+seasons4.toString());
		
		
	}

}

運行結果:blog

seasons:[Spring, Summer, Fall]
seasons2:[Spring, Summer, Fall, Winter]
seasons3:[Spring, Summer, Fall, Winter]
seasons4:[Spring, Summer, Fall]

List<String>的幾種用法:接口

相關文章
相關標籤/搜索