国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Arrays.asList和ArrayList.subList,集合添加/修改遇到的問題

這篇具有很好參考價值的文章主要介紹了Arrays.asList和ArrayList.subList,集合添加/修改遇到的問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Arrays.asList

List<Integer> statusList = Arrays.asList(1,2); //底層源碼返回的ArrayList,并不是java.util包下的
System.out.println(statusList);//[1,2]
System.out.println(statusList.contains(1));//true
System.out.println(statusList.contains(3));//false

/**
	添加元素到集合中,并沒有返回true,而是報異常
	因為此處的Arrays.asList(1,2)返回的ArrayList卻是Arrays類的內(nèi)部類
	也繼承了AbstractList類,重寫了很多方法,比如上面使用的contains方法,但是卻沒有重寫add方法,
*/
statusList.add(3);
System.out.println(statusList.contains(3));//java.lang.UnsupportedOperationException

總結(jié):

使用工具類 Arrays.asList()把數(shù)組轉(zhuǎn)換成集合時,不能使用其修改集合相關(guān)的方法,它的 add/remove/clear 方法會拋出 UnsupportedOperationException 異常。

ArrayList.subList

List<String> bookList = new ArrayList<>();
bookList.add("遙遠的救世主");
bookList.add("背叛");
bookList.add("天幕紅塵");
bookList.add("人生");
bookList.add("平凡的世界");

List<String> luyaoBookList = bookList.subList(3, 5);

System.out.println(bookList);

//subList返回的是bookList中索引從fromIndex(包含)到toIndex(不包含)的元素集合
System.out.println(luyaoBookList);//[人生,平凡的世界]

注意:

  • 修改原集合元素的值,會影響子集合
  • 修改原集合的結(jié)構(gòu),會引起ConcurrentModificationException異常
  • 修改子集合元素的值,會影響原集合
  • 修改子集合的結(jié)構(gòu),會影響原集合
// 修改原集合的值,影響到了子集合
bookList.set(3,"路遙-人生");

System.out.println(bookList);
System.out.println(luyaoBookList);
// 往原集合中添加元素,在遍歷子集合時,發(fā)生了ConcurrentModificationException異常
bookList.add("早晨從中午開始");

System.out.println(bookList);
System.out.println(luyaoBookList);

以上異常并不是在添加元素時發(fā)生的,而是在添加元素后,遍歷子集合時發(fā)生的

// 修改子集合的值,影響到了原集合
luyaoBookList.set(1,"路遙-平凡的世界");

System.out.println(bookList);
System.out.println(luyaoBookList);
// 往子集合中添加元素,影響到了原集合bookList。
luyaoBookList.add("早晨從中午開始");

System.out.println(bookList);
System.out.println(luyaoBookList);

總結(jié):

SubList類是ArrayList的內(nèi)部類,該構(gòu)造函數(shù)中也并沒有重新創(chuàng)建一個新的ArrayList,所以修改原集合或者子集合的元素的值,是會相互影響的。
ArrayList的subList方法,返回的是原集合的一個子集合(視圖),非結(jié)構(gòu)性修改任意一個集合的元素的值,都會彼此影響,結(jié)構(gòu)性修改原集合時,會報ConcurrentModificationException異常,結(jié)構(gòu)性修改子集合時,會影響原集合,所以使用時要注意,避免程序錯誤或者異常。文章來源地址http://www.zghlxwxcb.cn/news/detail-814960.html

到了這里,關(guān)于Arrays.asList和ArrayList.subList,集合添加/修改遇到的問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Arrays.asList 和 null 類型

    Arrays.asList 和 null 類型

    Arrays.asList() 返回的List 是它的內(nèi)部類,不能使用 retainAll() 取交集,導(dǎo)致元素的刪除,會報錯。 null 不能使用 instanceof ,返回的都是false。

    2024年02月09日
    瀏覽(18)
  • Arrays.asList() 返回的list不能add,remove

    Arrays.asList()返回的是List,而且是一個定長的List,所以不能轉(zhuǎn)換為ArrayList,只能轉(zhuǎn)換為AbstractList 原因在于asList()方法返回的是某個數(shù)組的列表形式,返回的列表只是數(shù)組的另一個視圖,而數(shù)組本身并沒有消失,對列表的任何操作最終都反映在數(shù)組上. 所以不支持remove,add方法的 下面是

    2024年02月13日
    瀏覽(18)
  • ChatGPT還是有點東西的-public static <T> List<T> Arrays.asList(T... a) {...}

    業(yè)務(wù)開發(fā)需要判斷業(yè)務(wù)狀態(tài)是否在30、40、50、60的集合內(nèi),所以寫了以下代碼 自我Review代碼時,驗證了下這行代碼,發(fā)現(xiàn)狀態(tài)為30時,仍然返回false。 在自我懷疑中調(diào)整代碼,并驗證,代碼如下: 沒想很明白,于是問了下ChatGPT。 Arrays.asList() 方法返回的結(jié)果類型取決于傳入的

    2024年02月12日
    瀏覽(17)
  • Java 淺談數(shù)組(Array)和列表(ArrayList)的區(qū)別 介紹Arrays常用方法

    目錄 一.數(shù)組和列表的區(qū)別 1.數(shù)組(Array) (1)數(shù)組(Array) (2)數(shù)組的聲明與創(chuàng)建 (3)多維數(shù)組 (4)數(shù)組的優(yōu)缺點 2.列表(ArrayList) (1)列表(ArrayList) (2)列表的聲明與創(chuàng)建 (3)列表的優(yōu)缺點 3.數(shù)組(Array)與列表(ArrayList)的區(qū)別 (1)空間大小 (2)存儲內(nèi)容

    2023年04月09日
    瀏覽(29)
  • 聊聊 Java 集合框架中的Arrays

    Arrays 和 Collections 是分別操作數(shù)組和集合的兩個工具類。今天就來對 Arrays 中的內(nèi)容作個總結(jié)。 Arrays 類位于 java.util 包中。 Arrays 繼承 Object Arrays 類中的靜態(tài)方法可以對數(shù)組進行排序、查詢、搜索等等操作。 1. Arrays.asList() 方法描述 該方法返回一個 ArrayList , 其返回的 ArrayList

    2024年01月21日
    瀏覽(18)
  • 將List集合轉(zhuǎn)換成ArrayList集合的方式

    方法一: 1.強行轉(zhuǎn)換,但是必須要求是ArrayList聲明的List,不能是List的其它子類 方法二: 1.使用集合的addAll方法,適用于List集合所有的子類和自己 方法三: 用谷歌的封裝方法 1.第一步pom先導(dǎo)入所需的谷歌jar 用 import com.google.common.collect.Lists;

    2024年02月11日
    瀏覽(25)
  • 探索Java集合框架—數(shù)據(jù)結(jié)構(gòu)、ArrayList集合

    探索Java集合框架—數(shù)據(jù)結(jié)構(gòu)、ArrayList集合

    Java集合的使用相信大家都已經(jīng)非常得心應(yīng)手,但是我們怎么做到知其然,更知其所以然這種出神入化的境界呢?我們揭開集合框架底層神秘面紗來一探究竟 目錄 一、背景介紹 二、思路方案 數(shù)據(jù)結(jié)構(gòu)是什么? 數(shù)據(jù)結(jié)構(gòu)可以分為線性和非線性兩種數(shù)據(jù)結(jié)構(gòu) 線性數(shù)據(jù)結(jié)構(gòu): 非

    2024年02月10日
    瀏覽(26)
  • ArrayList集合安全

    ArrayList集合安全

    并發(fā)修改異常 java.util.ConcurrentModificationException異常 ?

    2024年02月11日
    瀏覽(13)
  • ArrayList集合

    ArrayList集合

    一. 介紹 ArrayList是List接口的一個實現(xiàn)類,它是Java程序中最常用的集合之一。在ArrayList內(nèi)部,它使用一個可變長度的數(shù)組來存儲元素。當向ArrayList中添加元素時,如果當前的數(shù)組容量不足以容納新增的元素,ArrayList會自動進行擴容操作,創(chuàng)建一個更大的數(shù)組,并將原始數(shù)據(jù)復(fù)

    2024年02月16日
    瀏覽(14)
  • ArrayList(集合)

    ArrayList(集合)

    一、ArrayList構(gòu)造器 1.ArrayList():構(gòu)造一個初始容量為10的空列表 2.ArrayList(int n):構(gòu)造一個初始容量為n的空列表 3.ArrayList(Collection? extends E c):按照集合的迭代器返回的順序構(gòu)造一個包含指定集合元素的列表 二、基本方法 1.集合對象的創(chuàng)建 運行結(jié)果: 約束數(shù)據(jù)類型需要加,后面

    2024年01月23日
    瀏覽(9)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包