java list arrays_Java 集合 List Arrays.asList

【强制】使用工具类 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源码。

53844a00bf645f93c89d74590a084694.png

List 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以后,实现集合里面不必写明具体的元素类型。

0ea12c35f2cb3624a6643d12f843b30f.png

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 seasons = Arrays.asList("Spring", "Summer", "Fall");

//seasons.add("Winter"); // throw UnsupportedOperationException

System.out.println("seasons:"+seasons.toString());

List seasons2 = new ArrayList<>(seasons);

seasons2.add("Winter");

System.out.println("seasons2:"+seasons2.toString());

List seasons3 = new ArrayList<>();

seasons3.add("Spring");

seasons3.add("Summer");

seasons3.add("Fall");

seasons3.add("Winter");

System.out.println("seasons3:"+seasons3.toString());

// java 8

List seasons4 = Stream.of("Spring", "Summer", "Fall").collect(Collectors.toList());

System.out.println("seasons4:"+seasons4.toString());

}

}

运行结果:

seasons:[Spring, Summer, Fall]

seasons2:[Spring, Summer, Fall, Winter]

seasons3:[Spring, Summer, Fall, Winter]

seasons4:[Spring, Summer, Fall]

List的几种用法:

cde1b0118036afcf0ccf7db52f1a6bcb.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值