Java基本类型数组转ArrayList

简介: 先来看源码当我们调用Arrays.asList(array) 时,实际是执行了包可见的ArrayList的构造函数(注意通常这个构造函数对用户是不可见的,所以不能通过List list = new ArrayList(...

先来看源码

  • 当我们调用Arrays.asList(array) 时,实际是执行了包可见的ArrayList的构造函数(注意通常这个构造函数对用户是不可见的,所以不能通过List list = new ArrayList(array)来进行转换
  • 由于a是一个E[]数组,E又是ArrayList的泛型,所以我们传入的实参array必须是对象数组,或者对象列表
  • 如果传入的是基本类型数组,整个数组会被当做一个对象,从而Arrays.asList(new char[]{'a','b'});转换的类型为 List<char[]>
    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    } 
    ArrayList(E[] array) {
        if (array==null)
            throw new NullPointerException();
        a = array;
    }   
    private final E[] a;  
    private static class ArrayList<E> extends AbstractList<E>  

正确的转换方式

利用自动装箱机制,循环添加元素

public class Demo {
    public static void main(String[] args) {
        List<Character> list = new ArrayList<Character>();
        char[] chs = new char[]{'a', 'b'};
        for (Character ch : chs) {
            list.add(ch);
        }
        System.out.println(list);
    }
}  
目录
相关文章
|
2天前
|
存储 Java 数据处理
Java 数组的高级用法
在 Java 中,数组不仅可以存储同类型的数据,还支持多种高级用法,如多维数组(常用于矩阵)、动态创建数组、克隆数组、使用 `java.util.Arrays` 进行排序和搜索、与集合相互转换、增强 for 循环遍历、匿名数组传递以及利用 `Arrays.equals()` 比较数组内容。这些技巧能提升代码的灵活性和可读性,适用于更复杂的数据处理场景。
|
3天前
|
存储 Java
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
20 2
|
24天前
|
存储 Java
Java中ArrayList 元素的排序
本文提供了Java中根据`ArrayList`元素的某个属性进行排序的示例代码,包括实现`Comparable`接口和重载`compareTo`方法,然后使用`Collections.sort`方法进行排序。
|
24天前
|
Java
Java数组的应用场景
Java数组的应用场景
28 1
|
24天前
|
存储 机器学习/深度学习 Java
Java数组
Java数组
25 1
|
21天前
|
存储 开发者 C#
WPF与邮件发送:教你如何在Windows Presentation Foundation应用中无缝集成电子邮件功能——从界面设计到代码实现,全面解析邮件发送的每一个细节密武器!
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中集成电子邮件发送功能,详细介绍了从创建WPF项目到设计用户界面的全过程,并通过具体示例代码展示了如何使用`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage`类来实现邮件发送逻辑。文章还强调了安全性和错误处理的重要性,提供了实用的异常捕获代码片段,旨在帮助WPF开发者更好地掌握邮件发送技术,提升应用程序的功能性与用户体验。
23 0
|
28天前
|
存储 Java 开发者
揭秘!HashMap底层结构大起底:从数组到链表,再到红黑树,Java性能优化的秘密武器!
【8月更文挑战第24天】HashMap是Java集合框架中的核心组件,以其高效的键值对存储和快速访问能力广受开发者欢迎。在JDK 1.8及以后版本中,HashMap采用了数组+链表+红黑树的混合结构,实现了高性能的同时解决了哈希冲突问题。数组作为基石确保了快速定位;链表则用于处理哈希冲突;而当链表长度达到一定阈值时,通过转换为红黑树进一步提升性能。此外,HashMap还具备动态扩容机制,当负载因子超过预设值时自动扩大容量并重新哈希,确保整体性能。通过对HashMap底层结构的深入了解,我们可以更好地利用其优势解决实际开发中的问题。
47 0
|
29天前
|
存储 搜索推荐 算法
在 Java 中如何更改数组列表的顺序
【8月更文挑战第23天】
14 0
|
Java C语言 iOS开发
火眼金睛看Java基本类型(下) | 带你学《Java编程入门》之三
程序是一套数字处理的游戏框架,也就是说在整个程序开发的过程中,所达到的最终目的就是对一些数据的处理过程。那么既然要进行数据的处理,就一定需要提供有各种类型的数据定义。
|
7天前
|
存储 缓存 安全
【Java面试题汇总】多线程、JUC、锁篇(2023版)
线程和进程的区别、CAS的ABA问题、AQS、哪些地方使用了CAS、怎么保证线程安全、线程同步方式、synchronized的用法及原理、Lock、volatile、线程的六个状态、ThreadLocal、线程通信方式、创建方式、两种创建线程池的方法、线程池设置合适的线程数、线程安全的集合?ConcurrentHashMap、JUC
【Java面试题汇总】多线程、JUC、锁篇(2023版)