Java中常用的五種List聲明并賦值操作方式
方式1、新手方式
該方式聲明的List:元素支持:添加、修改、刪除
該方式雖然簡單、直觀,但并不優(yōu)雅。
List<String> list = new ArrayList<>(); ? list.add("張三"); ? list.add("李四"); ? list.add("王五"); ? list.add("趙六");
使用方式:
語法最基本的聲明,add() 方法添加。
方式2、使用Stream流方式
該方式聲明的List:元素支持:添加、修改、刪除
? List<User> userList = Stream.of(user1, user2, user3).collect(Collectors.toList()); userList.forEach(System.out::println);//輸出
使用方式:
Stream.of 數(shù)組轉(zhuǎn)換為流的常用方式之一
(user1, user2, user3) 可變參數(shù)、數(shù)組,可以是:對象、字符串等
.collect(Collectors.toList()); 流的收集操作
1、將可變參數(shù)(或數(shù)組)轉(zhuǎn)換為流,
2、使用流的規(guī)約操作(終端操作):收集.collect(),
3、收集方式:Collectors.toList(),收集為List(看懂這句,需了解Stream流的實現(xiàn)過程)
解析:
Stream.of()是創(chuàng)建 流 的一種方式,他可以傳入多個參數(shù)創(chuàng)建一個Stream<T>的對象,沒有中間操作,終端操作:收集,收集器轉(zhuǎn)換為List集合
方式3、使用工具類為創(chuàng)建的List對象賦值,
該方式聲明的List:元素支持:添加、修改、刪除
List<String> list = new ArrayList<>();//List規(guī)定為String類型,所以可變參數(shù)也要是String哦 ? Collections.addAll(list,"張三豐","張無忌","周芷若","趙敏","張強");、 list.forEach(System.out::println);
使用方式:
指定需要添加的集合,然后通過在addAll()中傳入一個 “可變參數(shù)” ,可變參數(shù)也就是類型一樣,但個數(shù)不限的參數(shù),可變參數(shù)有數(shù)組的性質(zhì),故傳入一個 數(shù)組 對象也可以(多個數(shù)組對象就不滿足可變參數(shù)的定義了哦~)。
方式4、創(chuàng)建靜態(tài)集合
(該集合疑似和數(shù)組綁定),由于數(shù)組長度固定,該集合不可添加和刪除元素,添加、刪除就會報錯,但支持修改。
@Test public void test() throws Exception{ List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); // int[] arr = new int[]{1,2,3}; // IntStream.of(arr).forEach(System.out::print); // System.out.println(); // Integer[] arr1 = new Integer[]{1,2,3}; // Stream.of(arr1).forEach(System.out::println); // Stream.of(arr).forEach(System.out::println); ? // numbers.add(10);//運行報錯java.lang.UnsupportedOperationException // numbers.remove(0);//運行報錯java.lang.UnsupportedOperationException numbers.set(0,5);//可以修改 numbers.stream().forEach(System.out::println); // numbers.stream().sorted().forEach(System.out::println); // numbers.parallelStream().forEach(System.out::println); }
解析:本質(zhì)是將一個數(shù)組轉(zhuǎn)成List,數(shù)組的大小是固定的,所以此List不能 添加 和 刪除 元素,但支持 修改 元素。
如果調(diào)用add()方法 添加 新的元素,會報異常:java.lang.UnsupportedOperationException
刪除 同理。
支持 修改 。雖然不能 添加 或者 刪除 但支持 修改 其中的元素。
方式5、創(chuàng)建不可變集合 (要求JDK1.9 --- Java9版本及以上)
該方式聲明的List:元素不可以 添加、修改、刪除
//只支持java9及以上版本 List list = List.of(1,2,3,4,5); //支持Set和Map Set set = Set.of(1,2,3,4,5); Map map = Map.of(k,v,k,v,k,v,k,v,);
附:將一個list賦值給另一個list
1 對象引用的方式賦值
//將A的值賦給鏈表B List<String> A= new ArrayList<String>(); A.add("1"); A.add("2"); List<String> B = A;
注:此時B對象相當與A對象的引用,而并不是將A對象的值單純的傳遞給B對象。即:B對象的操作將直接改變A對象。如B.add(“3”);結(jié)果A中也包含了“3”;
2 非對象引用的方式賦值
單純的把值賦予另一個list的方式有多種。如下:
(假設(shè)list A已初始化并賦值)
- 方式一:
ArrayList B = new ArrayList<> (A);
- 方式二:
ArrayList B?。?A.clone();
- 方式三:
ArrayList B?。?new ArrayList<String>(); B.addAll(A);
- 方式四:
for(String s: A) { B.add(s); }
總結(jié)
到此這篇關(guān)于Java中常用的五種List聲明并賦值操作的文章就介紹到這了,更多相關(guān)Java中List聲明并賦值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis-spring:@MapperScan注解的使用
這篇文章主要介紹了mybatis-spring:@MapperScan注解的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09Springboot過濾器禁止ip頻繁訪問功能實現(xiàn)
這篇文章主要介紹了Springboot過濾器禁止ip頻繁訪問功能實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04Spring RestTemplate使用方法示例總結(jié)
這篇文章主要介紹了Spring RestTemplate使用方法示例總結(jié),本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧2025-04-04