当前位置:首页 > 后端开发 > Java数组转集合之Arrays.asList()用法

Java数组转集合之Arrays.asList()用法

6个月前 (05-26)27

Arrays.asList()用法

使用Arrays.asList()的原因无非是想将数组或一些元素转为集合,而你得到的集合并不一定是你想要的那个集合。

而一开始asList的设计时用于打印数组而设计的,但jdk1.5开始,有了另一个比较更方便的打印函数Arrays.toString(),于是打印不再使用asList(),而asList()恰巧可用于将数组转为集合。

public class App {
  public static void main(String[] args) {
    List<String> stringA = Arrays.asList("A");
    String[] stringArray = {"B"};
    List<String> stringB = Arrays.asList(stringArray);
 
    System.out.println(stringA);
    System.out.println(stringB);
  }
}

  运行结果

[A]
[B]
public class App {
  public static void main(String[] args) {
    int[] intarray = {1, 2, 3, 4, 5};
    //List<Integer> list = Arrays.asList(intarray); 编译通不过
    List<int[]> list = Arrays.asList(intarray);
    System.out.println(list);
  }
}
 
output:
[[I@66d3c617]

你是不是以为上面 👆那个 list 是 java.util.ArrayList ?

 实际上返回的是:java.util.Arrays.ArrayList

源码:

Java数组转集合之Arrays.asList()用法 _ Java侠

但它和ArrayList貌似很像唉!有什么不同吗?

不同之处:

Arrays.ArrayList 是工具类 Arrays 的一个内部静态类,它没有完全实现List的方法,而 ArrayList直接实现了List 接口,实现了List所有方法。

 Java数组转集合之Arrays.asList()用法 _ Java侠

 

 

  • 长度不同 和 实现的方法不同

    Arrays.ArrayList是一个定长集合,因为它没有重写add,remove方法,所以一旦初始化元素后,集合的size就是不可变的。

  • 参数赋值方式不同

Arrays.ArrayList将外部数组的引用直接通过“=”赋予内部的泛型数组,所以本质指向同一个数组。

Java数组转集合之Arrays.asList()用法 _ Java侠

ArrayList是将其他集合转为数组后copy到自己内部的数组的。

Java数组转集合之Arrays.asList()用法 _ Java侠

所以使用Arrays.asList()需要注意以下两点。

一、不能把基本数据类型转化为列表

仔细观察可以发现asList接受的参数是一个泛型的变长参数,而基本数据类型是无法泛型化的,如下所示:

  public  class  App {
   public  static  void  main(String[] args) {
     int [] intArray = { 1 2 3 4 };
     List<Integer> list = Ints.asList(intArray);
     list.set( 0 100 );
     System.out.println(Arrays.toString(intArray));
     list.add( 5 );
     list.remove( 0 );
 
   }
}

  这是因为把int类型的数组当参数了,所以转换后的列表就只包含一个int[]元素。

要想把基本数据类型的数组转化为其包装类型的list,可以使用guava类库的工具方法,示例如下:

int[] intArray = {1, 2, 3, 4};

List<Integer> list = Ints.asList(intArray);

支持基础类型的方式

1、如果使用Spring

 Java数组转集合之Arrays.asList()用法 _ Java侠

2、如果使用Java 8

Java数组转集合之Arrays.asList()用法 _ Java侠

数组转ArrayList

1、遍历转换 

 Java数组转集合之Arrays.asList()用法 _ Java侠

2、使用工具类

Java数组转集合之Arrays.asList()用法 _ Java侠

3、如果使用Java 8

既可以用于基本类型也可以返回想要的集合。

 自己比较常用

int a [] ={1,2,3};

List<Integer> ilist = Arrays.stream(a).boxed()
.collect(Collectors.toList());
System.out.println(ilist);

  

4、两个集合类结合

 Java数组转集合之Arrays.asList()用法 _ Java侠

 

作者:AlexZS
来源链接:https://www.cnblogs.com/alomsc/p/10996223.html

标签: Java集合Java

“Java数组转集合之Arrays.asList()用法” 的相关文章

java基础总结

1 /查看数组是否为空 2 String[] aorgPks = userRole.getAssignOrgPks(); 3 if(ArrayUtil...

Java对象的四种引用

前言 在JDK1.2之前,创建的对象只有在处于可触及(reachable)的状态下,才能被程序使用。也就是说,若一个对象不被任何变量引用,那么...

java集合简要介绍

java集合简要介绍

1.java集合框架概述 java集合就像是一种容器,可以动态的把多个对象的引用放入容器中。它可以存贮数量不等的多个对象,还可以用于保存具有映...

java list 判断对象是否存在

String tags=this.getPublish().getTags();        &nbs...

java安装及配置环境变量

java安装及配置环境变量

JDK(TM)7 64位是针对Java开发员推出的软件开发工具包,是学习Java语言的得力助手,无论是搭建jsp web开发环境,还是做android开发,都离不开JDK。主要用于移动设...

java多线程的几种实现方式

java多线程的几种实现方式

1.继承Thread类,重写run方法 Thread类本质上是实现了Runnable接口的一个实例。因此,启动线程的唯一方式就是通过...

Hibernate从入门到上手(纯java project、Maven版本hibernate)

Hibernate从入门到上手(纯java project、Maven版本hibernate)

Hibernate(orm框架)(开放源代码的对象关系映射框架) Hibernate是一个开放源代码的对象关系映射框架,它对JD...

Java多线程(详解)

Java多线程(详解)

Java多线程 一、进程与线程 二、Java中线程实现的方式...

Java多线程并发07——锁在Java中的实现

Java多线程并发07——锁在Java中的实现

上一篇文章中,我们已经介绍过了各种锁,让各位对锁有了一定的了解。接下来将为各位介绍锁在Java中的实现。关注我的公众号「Java面典」了解更多 Java 相关知识点。...

Java中print()方法的使用

Java中print()方法的使用

在学习Java中,看到编程思想的代码里有print()方法,而当我练习时发现输入print()方法时引入的包并不是net.mindview.util.print.*包,原先以...