Arrays.asList()的使用

  1. Arrays.asList()将数组转换为集合后,底层其实还是数组,它返回的是Arrays的一个内部类,体现了适配器模式。
  2. 传递的数组必须是对象数组,而不是基本类型。
  3. 当传入一个原生数据类型数组时,Arrays.asList() 的真正得到的参数就不是数组中的元素,而是数组对象本身!此时List 的唯一元素就是这个数组。
  4. 使用集合的修改方法:add()、remove()、clear()会抛出UnsupportedOperationException异常。
package com.xiaobu.learn.array;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author xiaobu
 * @version JDK1.8.0_171
 * @date on  2019/7/3 10:14
 * @description
 *
 */
public class ArrayDemo1 {
    public static void main(String[] args) {
        //test();
        testAddAndRemove();
        //newalist();
    }


    /**
     * 功能描述: 传递的数组必须是对象数组,而不是基本类型。
     * 当传入一个原生数据类型数组时,Arrays.asList() 的真正得到的参数就不是数组中的元素,
     * 而是数组对象本身!此时List 的唯一元素就是这个数组,这也就解释了上面的代码。
     * @author xiaobu
     * @date 2019/7/3 10:22
     * @return void
     * @version 1.0
     */
    public static void test(){
        int[] myArray = {1,2,3};
        List list = Arrays.asList(myArray);
        System.out.println("list.size() = " + list.size());
        System.out.println("list.get(0) = " + list.get(0));
        int[] array = (int[]) list.get(0);
        System.out.println("array[0] = " + array[0]);
        //ArrayIndexOutOfBoundsException
        System.out.println("list.get(1) = " + list.get(1));
    }

    /**
     * 功能描述:Arrays.asList(myArray) 其底层还是数组不能调用add remove以及clear等方法
     * @author xiaobu
     * @date 2019/7/3 10:30
     * @return void
     * @version 1.0
     */
    public static void testAddAndRemove(){
        int[] myArray = {1,2,3};
        List list = Arrays.asList(myArray);
        //UnsupportedOperationException
        list.add(4);
        //UnsupportedOperationException
        list.remove(1);
        System.out.println("list = " + list);
    }



    /**
     * 功能描述:当传入一个原生数据类型数组时,Arrays.asList() 的真正得到的参数
     *  就不是数组中的元素,而是数组对象本身!
     * @author xiaobu
     * @date 2019/7/3 10:38
     * @return void
     * @version 1.0
     */
    public  static void newalist(){
        int[] myArray = {1,2,3};
        List list = new ArrayList<>(Arrays.asList(myArray));
        System.out.println("list = " + list);
        //add 之后list大小为2
        list.add(4);
        System.out.println("list = " + list);
        //报错 IndexOutOfBoundsException
        list.remove(2);
        System.out.println("list = " + list);
        list.clear();
        System.out.println("list = " + list);
    }
}

手动创建list

  1. 最简易的方法
        List list2 = new ArrayList<>(Arrays.asList(1,2,3));
  1. 使用java8 stream创建
        Integer [] myArray = { 1, 2, 3 };
        List list = Arrays.stream(myArray).collect(Collectors.toList());
        System.out.println("list = " + list);
       //基本类型也可以实现转换(依赖boxed的装箱操作)
       int [] myArray2 = { 1, 2, 3 };
       List myList = Arrays.stream(myArray2).boxed().collect(Collectors.toList());
      System.out.println("myList = " + myList);
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Arrays.asListJava中的一个方法,它的作用是将括号中的数据转化为一个List实例。这个方法可以接收任意数量的参数,并将它们转化为一个List对象。比如,在下面的示例中,我们可以将1、2和3转化为一个包含这些元素的List实例: List<Integer> integers = Arrays.asList(1, 2, 3)。 需要注意的是,Arrays.asList方法不适用于基本数据类型,例如byte、short、int、long、float、double和boolean,但可以用基本数据类型的封装类,比如char的封装类Character。 这个方法的使用方法可以参考中的示例代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Arrays.asList的作用](https://blog.csdn.net/weixin_52627566/article/details/121307603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Java Arrays.asList使用方法解析](https://download.csdn.net/download/weixin_38741891/12727369)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值