java中数组和ArrayList的互转

java中基本类型数组[]和ArrayList之间的互相转换在算法实现过程中经常使用。

  

 1         int[] data = {4, 5, 3, 6, 2, 5, 1};
 2
 3         // int[] 转 List<Integer>
 4         List<Integer> list1 = Arrays.stream(data).boxed().collect(Collectors.toList());
 5         // Arrays.stream(arr) 可以替换成IntStream.of(arr)。
 6         // 1.使用Arrays.stream将int[]转换成IntStream。
 7         // 2.使用IntStream中的boxed()装箱。将IntStream转换成Stream<Integer>。
 8         // 3.使用Stream的collect(),将Stream<T>转换成List<T>,因此正是List<Integer>。
 9
10         // int[] 转 Integer[]
11         Integer[] integers1 = Arrays.stream(data).boxed().toArray(Integer[]::new);
12         // 前两步同上,此时是Stream<Integer>。
13         // 然后使用Stream的toArray,传入IntFunction<A[]> generator。
14         // 这样就可以返回Integer数组。
15         // 不然默认是Object[]。
16
17         // List<Integer> 转 Integer[]
18         Integer[] integers2 = list1.toArray(new Integer[0]);
19         //  调用toArray。传入参数T[] a。这种用法是目前推荐的。
20         // List<String>转String[]也同理。
21
22         // List<Integer> 转 int[]
23         int[] arr1 = list1.stream().mapToInt(Integer::valueOf).toArray();
24         // 想要转换成int[]类型,就得先转成IntStream。
25         // 这里就通过mapToInt()把Stream<Integer>调用Integer::valueOf来转成IntStream
26         // 而IntStream中默认toArray()转成int[]。
27
28         // Integer[] 转 int[]
29         int[] arr2 = Arrays.stream(integers1).mapToInt(Integer::valueOf).toArray();
30         // 思路同上。先将Integer[]转成Stream<Integer>,再转成IntStream。
31
32         // Integer[] 转 List<Integer>
33         List<Integer> list2 = Arrays.asList(integers1);
34         // 最简单的方式。String[]转List<String>也同理。
35
36         // 同理
37         String[] strings1 = {"a", "b", "c"};
38         // String[] 转 List<String>
39         List<String> list3 = Arrays.asList(strings1);
40         // List<String> 转 String[]
41         String[] strings2 = list3.toArray(new String[0]);

注意:不行的话就直接进行循环暴力操作,问题不大

原文地址:https://www.cnblogs.com/oldhands/p/11847039.html

时间: 2024-10-08 16:04:35

java中数组和ArrayList的互转的相关文章

将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

方法一:使用Arrays.asList()方法 1 2 String[] asset = {"equity", "stocks", "gold", "foreign exchange","fixed income", "futures", "options"}; List<String> assetList = Arrays.asList(asset);

在java 中,数组与 List&lt;T&gt; 类型的相互转换

在java中,数组与List<T> 之前进行互相转换,转换方法可总结为以下几种: 一. 将 数组转换成List<T> 1. 使用 Collections 的addAll 方法 String[] myStr = {"1","2","4","9","7"}; List<String> listStr = new ArrayList<String>(); Colle

java中数组,列表,集合的基本用法

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class shuzu { public static void main(String[] args){ //数组 array(); //列表 list(); //集合 map(); } public static void array(){ int[] a=new int[]{0,1

Java中Vector和ArrayList的区别

首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复. 3个具体实现类的相关区别如下: ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组

Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法

Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动 等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,Linke

java中数组、集合、字符串之间的转换,以及用加强for循环遍历

java中数组.集合.字符串之间的转换,以及用加强for循环遍历: 1 @Test 2 public void testDemo5() { 3 ArrayList<String> list = new ArrayList<String>(); 4 list.add("甲乙1"); 5 list.add("甲乙2"); 6 list.add("甲乙3"); 7 list.add("甲乙4"); 8 //

C#中数组、ArrayList和List三者的区别

在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. [csharp] view plaincopy <span style="font-family:SimSun;font-size:18px;">//数组 string[] s=new string[2]; //赋值 s[0]="a"; s[1]=&quo

Java中数组的特性

转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具有固定的长度,并且在内存中占据连续的空间.在C,C++等语言中,数组的定义简洁清晰,而在Java中确有一些会让人迷惑的特性.本文就尝试分析这些特性. Java中的数组是对象吗? Java和C++都是面向对象的语言.在使用这些语言的时候,我们可以直接使用标准的类库,也可以使用组合和继承等面向对象的特性

C++ 的向量结构结合了Java中数组和向量两者的优点

C++ 的向量结构结合了Java中数组和向量两者的优点.一个C++ 的向量可以方便的被访问,其容量又可以动态的增长.如果 T 是任意类型,则 vector<T> 是一个元素为 T 类型的动态数组.下面的语句 vector<int> a; 产生一个初始为空的向量.而语句 vector<int> a(100); 生成一个初始有100个元素的向量.你可以使用push_back 函数来添加元素: a.push_back(n); 调用 a.pop_back() 从a中取出最后一个