电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java Arrays.asList使用方法解析

瀏覽:48日期:2022-09-04 10:07:17

Arrays.asList()方法的作用是將數組或一些元素轉為集合,而你得到的集合并不是我們通常使用的List集合,而是Arrays里面的一個內部類。阿里的開發手冊上java開發規范說到使用工具類Arrays.asList()方法把數組轉換成集合時,不能使用其修改集合相關的方法,它的add/remove/clear方法會拋出java.lang.UnsupportedOperationException的異常。

一、Arrays.asList的方法說明

public static void main(String[] args) { String[] strs = {'1','2','3'}; List<String> asList = Arrays.asList(strs); System.out.println(asList.size()); asList.add('4'); }

運行結果如下,asList的add和remove方法都會拋異常。

3Exception in thread 'main' java.lang.UnsupportedOperationExceptionat java.util.AbstractList.add(AbstractList.java:148)at java.util.AbstractList.add(AbstractList.java:108)at com.basic.practice.ArraysPractice.main(ArraysPractice.java:12)

而set方法,則可以正常調用。

asList.set(1, '4');

方法沒有拋異常,正常返回結果:

3[1, 4, 3]

Process finished with exit code 0

查看下Arrays.asList()方法的源碼,可以發現asList里面直接用傳入的數組創建并反悔了ArrayList,而這個ArrayList是Arrays的內部類,它的size()方法直接取的是構造方法傳參時的數組的長度,ArrayList雖然實現了List接口,但是并沒有重寫add和remove方法,但重寫了get和set方法。

@SafeVarargs @SuppressWarnings('varargs') public static <T> List<T> asList(T... a) { return new ArrayList<>(a); } /** * @serial include */ private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable { private static final long serialVersionUID = -2764017481108945198L; private final E[] a; ArrayList(E[] array) { a = Objects.requireNonNull(array); } @Override public int size() { return a.length; } @Override public Object[] toArray() { return a.clone(); } @Override @SuppressWarnings('unchecked') public <T> T[] toArray(T[] a) { int size = size(); if (a.length < size)return Arrays.copyOf(this.a, size, (Class<? extends T[]>) a.getClass()); System.arraycopy(this.a, 0, a, 0, size); if (a.length > size)a[size] = null; return a; } @Override public E get(int index) { return a[index]; } @Override public E set(int index, E element) { E oldValue = a[index]; a[index] = element; return oldValue; } @Override public int indexOf(Object o) { E[] a = this.a; if (o == null) {for (int i = 0; i < a.length; i++) if (a[i] == null) return i; } else {for (int i = 0; i < a.length; i++) if (o.equals(a[i])) return i; } return -1; } @Override public boolean contains(Object o) { return indexOf(o) != -1; } @Override public Spliterator<E> spliterator() { return Spliterators.spliterator(a, Spliterator.ORDERED); } @Override public void forEach(Consumer<? super E> action) { Objects.requireNonNull(action); for (E e : a) {action.accept(e); } } @Override public void replaceAll(UnaryOperator<E> operator) { Objects.requireNonNull(operator); E[] a = this.a; for (int i = 0; i < a.length; i++) {a[i] = operator.apply(a[i]); } } @Override public void sort(Comparator<? super E> c) { Arrays.sort(a, c); } }

org.springframework.util.CollectionUtils.arrayToList()方法內部上也是會有這樣的問題,底層也是使用的Arrays.asList()的方法。

二、常見的數組轉list的方式

1、java8的流轉換

List<String> list = Stream.of(strs).collect(Collectors.toList());

2、Collections工具類

ArrayList<String> list1 = new ArrayList<>();Collections.addAll(list1,strs);

3、多一層封裝創建

List<String> strings = new ArrayList<>(Arrays.asList(strs));

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 彩超机-黑白B超机-便携兽用B超机-多普勒彩超机价格「大为彩超」厂家 | 旋振筛_不锈钢旋振筛_气旋筛_旋振筛厂家—新乡市大汉振动机械有限公司 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 农业四情_农业气象站_田间小型气象站_智慧农业气象站-山东风途物联网 | 篷房[仓储-婚庆-展览-活动]生产厂家-江苏正德装配式帐篷有限公司 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 国产液相色谱仪-超高效液相色谱仪厂家-上海伍丰科学仪器有限公司 | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 | 真空上料机(一种真空输送机)-百科 | 钢制暖气片散热器_天津钢制暖气片_卡麦罗散热器厂家 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 | 新疆散热器,新疆暖气片,新疆电锅炉,光耀暖通公司 | 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | 无锡网站建设_小程序制作_网站设计公司_无锡网络公司_网站制作 | 平面钻,法兰钻,三维钻-山东兴田阳光智能装备股份有限公司 | 圆盘鞋底注塑机_连帮鞋底成型注塑机-温州天钢机械有限公司 | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | 储气罐,真空罐,缓冲罐,隔膜气压罐厂家批发价格,空压机储气罐规格型号-上海申容压力容器集团有限公司 | WTB5光栅尺-JIE WILL磁栅尺-B60数显表-常州中崴机电科技有限公司 | 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 | 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | PCB接线端子_栅板式端子_线路板连接器_端子排生产厂家-置恒电气 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 塑料脸盆批发,塑料盆生产厂家,临沂塑料广告盆,临沂家用塑料盆-临沂市永顺塑业 | 海尔生物医疗四川代理商,海尔低温冰箱四川销售-成都壹科医疗器械有限公司 | 滚筒烘干机_转筒烘干机_滚筒干燥机_转筒干燥机_回转烘干机_回转干燥机-设备生产厂家 | 深圳办公室装修,办公楼/写字楼装修设计,一级资质 - ADD写艺 | 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 苏商学院官网 - 江苏地区唯一一家企业家自办的前瞻型、实操型商学院 | 氧化铝球_高铝球_氧化铝研磨球-淄博誉洁陶瓷新材料有限公司 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 塑料薄膜_PP薄膜_聚乙烯薄膜-常州市鑫美新材料包装厂 | 临海涌泉蜜桔官网|涌泉蜜桔微商批发代理|涌泉蜜桔供应链|涌泉蜜桔一件代发 | 座椅式升降机_无障碍升降平台_残疾人升降平台-南京明顺机械设备有限公司 |