Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Arrays API

Arrays API

原创
作者头像
HLee
修改于 2021-09-09 02:40:15
修改于 2021-09-09 02:40:15
37900
代码可运行
举报
文章被收录于专栏:房东的猫房东的猫
运行总次数:0
代码可运行

copyOf

Arrays类的copyOf(U[] original, int newLength, Class<? extends T[]> newType)方法用于复制指定数组original到新数组,新数组的长度为newLength,新数组元素类型为newType。

  1. 如果新数组的长度大于旧数组,那么多出的那部分用null填充;
  2. 如果新数组的长度小于旧数组,那么少的那部分直接截取掉;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Long[] array1 = new Long[]{1L, 2L, 3L};

Object[] array2 = Arrays.copyOf(array1, 5, Object[].class);
System.out.println(Arrays.toString(array2)); // [1, 2, 3, null, null]

Object[] array3 = Arrays.copyOf(array1, 2, Object[].class);
System.out.println(Arrays.toString(array3)); // [1, 2]

asList

解释:Arrays.asList会将数组转化为ArrayList<>。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
源码:
public static <T> List<T> asList(T... a) {
   return new ArrayList<>(a);
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class test {
  public static void main(String[] args) {
   
    String[] str = new String[5];
    str[0] = "a";
    str[1] = "b";
    str[2] = "c";
    str[3] = "d";
    str[4] = "e";

    //调用Arrays中的asList方法将String[]转化为一个List<String>
    List<String> list = Arrays.asList(str);
    System.out.println("list:" + list.toString());

    //再为list单独添加元素
    list.add("f");
    list.add("g");
    System.out.println("list:" + list.toString());
  }
}

正常Arrays.asList(str)是没问题的,但是在list.add("f")、list.add("g")的时候出现了UnsupportedOperationException异常。

解释:因为在Arrays.asList的时候,Arrays类是return new ArrayList<>(a)一个内部ArrayList类(成员内部类),这个内部类继承了AbstractList类,因为内部类没有重新父类的add方法,转而在add操作时会调用父类的add方法,而AbstractList在add的时候会抛出UnsupportedOperationException异常。但是由于ArrayList类也集成了AbstractList父类同时也重写了add、remove操作索引不会调用父类的方法,因此不会抛出异常。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
源码:AbstractList类

public void add(int index, E element) {
   throw new UnsupportedOperationException();
}

public E remove(int index) {
   throw new UnsupportedOperationException();
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
方式一:
String[] strArray = new String[2];
ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;
list.add("1");
System.out.println(list);

方式二:(最高效)
String[] strArray = new String[2];
ArrayList< String> arrayList = new ArrayList<String>(strArray.length);
Collections.addAll(arrayList, strArray);
arrayList.add("1");
System.out.println(arrayList);

方式三:
List<Integer> intList= Arrays.stream(new int[] { 1, 2, 3, }).boxed().collect(Collectors.toList());
List<Long> longList= Arrays.stream(new long[] { 1, 2, 3 }).boxed().collect(Collectors.toList());
List<Double> doubleList= Arrays.stream(new double[] { 1, 2, 3 }).boxed().collect(Collectors.toList());

String[] arrays = {"tom", "jack", "kate"};
List<String> stringList= Stream.of(arrays).collect(Collectors.toList());

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Arrays.asList()使用指南
List<String> list = Arrays.asList("a","b","c");
黑洞代码
2021/01/14
4660
Arrays.asList()使用指南
java中数组转成list_java定义数组并赋值
使用Arrays工具类Arrays.asList(strArray)方式,转换完成后,只能对List数组进行查改,不能增删,增删就会抛出UnsupportedOperationException 异常
全栈程序员站长
2022/09/25
2.1K0
java中数组转成list_java定义数组并赋值
Arrays.asList()使用指南
最近使用Arrays.asList()遇到了一些坑,然后在网上看到这篇文章:http://javadevnotes.com/java-array-to-list-examples 感觉挺不错的,但是还不是很全面而且是英文的。所以,自己对于这块小知识点进行了简单的总结
乔戈里
2019/07/19
4240
面试难题:Java 数组转 List 的3种 性能对比!
本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的类型转换错误原因解析。
搜云库技术团队
2021/08/20
8310
List 的10个坑,保证你一定遇到过!
在我们实际开发中,List应该是使用最多的集合之一,既然用的多,那我们就应该重视,免得出bug。
田维常
2022/11/25
5700
List 的10个坑,保证你一定遇到过!
数组转化为list
1、Arrays.asList(strArray) 方式 将数组转换List后,不能对List增删,只能查改,否 则抛异常。此时是java.util.Arrays.ArrayList 这里面有java.util.Arrays里面的内部类,里面没有重写增删方法,就会调用父类的AbstractList,可以看到父类的增删方法,就会报错,即使调用iterator也会报错。
全栈程序员站长
2022/09/07
4920
Arrays.asList():使用指南
Arrays.asList() 是一个 Java 的静态方法,它可以把一个数组或者多个参数转换成一个 List 集合。这个方法可以作为数组和集合之间的桥梁,方便我们使用集合的一些方法和特性。本文将介绍 Arrays.asList() 的语法、应用场景、坑点和总结。
wayn
2023/09/12
2500
Arrays.asList():使用指南
老程序员Java数组转List都这样操作「建议收藏」
通过 Arrays.asList(strArray) 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常。
全栈程序员站长
2022/09/25
5170
老程序员Java数组转List都这样操作「建议收藏」
java中数组转成list_java数组转json
1. 使用Arrays.asList生成的list是定长的,无法增加或删除元素,调用add或remove方法会抛出UnsupportedOperationException异常
全栈程序员站长
2022/09/25
1.5K0
Arrays.asList 解析
官方的解释: 返回由指定数组支持的固定大小的列表,这个方法是array 和 collectionn API 之间的一个桥梁,它所返回的List 是序列化之后的,并且实现了 RandomAccess 接口
cxuan
2019/06/03
7350
Java 集合使用不当,Code Review 被 diss了!
有很多小伙伴在写代码的时候,有一些比较基础的问题没有考虑到,导致项目 Code Review 的时候被 diss。
Guide哥
2021/09/16
5130
ArrayList源码分析(基于jdk1.8)(三):Arrays.asList方法带来的问题
Arrays.asList,本来是另外一个类,之所以放到ArrayList相关的文章里面一并讨论,是因为这也是我们日常在使用过程中的一个误区,容易将Arrays.asList产生的结果与ArrayList进行等价。
冬天里的懒猫
2020/08/11
5550
ArrayList源码分析(基于jdk1.8)(三):Arrays.asList方法带来的问题
被Arrays.asList坑了后,我决定分析它的源码
平时我们使用Arrays.asList()快速组装成List集合。比如我们将字符串或者数组转换成集合:
Lvshen
2022/05/05
4050
被Arrays.asList坑了后,我决定分析它的源码
花了几个小时总结了一些容易出错的 Java 知识点
Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。
Java_老男孩
2019/12/19
5610
小心!"数组"转"集合"的这几个隐藏"bug"
虽然int可以装箱为包装类integer,但int数组则无法整体装箱成integer数组。
浩说编程
2021/12/24
3280
Java 中数组Array和列表List的转换
使用Collections.addAll()方法,返回的List可以执行新增add方法,但该种方式只针对引用对象,不针对基本数据类型,该种方法效率较高,推荐用法。
闻说社
2025/03/24
2980
Java 中数组Array和列表List的转换
如何正确的将数组转换为ArrayList?
对于不可变集合,你可以使用ImmutableList类及其of()与copyOf()工厂方法:(参数不能为空)
崔笑颜
2020/06/08
4K0
数组转LIst的几种方法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151624.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/25
4880
Java中Arrays类详解
static <T> List<T> asList(T... a);//只有这一个方法
訾博ZiBo
2025/01/06
1150
那些年我们在Java泛型上躺过的枪---万恶的泛型擦除【享学Java】
泛型(Generics),从字面的意思理解就是泛化的类型,即参数化类型。 我们都知道,泛型是JDK5提供的一个非常重要的新特性,它有非常多优秀的品质:能够把很多问题从运行期提前到编译器,从而使得程序更加的健壮。
YourBatman
2019/09/03
1K0
那些年我们在Java泛型上躺过的枪---万恶的泛型擦除【享学Java】
相关推荐
Arrays.asList()使用指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验