Java中List、Set和数组之间转换方法总结
2023-09-27 14:29:07 时间
List转数组:
方法一:(笨办法硬换)
//array为待转换int[]
int[] res = new int[list.size()];
int i = 0;
for(int num : list){
res[i] = num;
i++;
}
方法二:(toArray)
//int类型,其他基本数据类型同理(必须是包装类对象)
//底层源码逻辑:
//1.当传入的对象数组长度小于等于实际长度时,按实际长度copy一份
//2.当传入的对象数组长度大于实际长度时,返回数组后面超过实际数据长度的位置会补null
//因此,这里主要是为了传入类型,通常写实际数组长度或者写0都可以
//重点!!!只有元素类型为引用数据类型的才能这样转,List<Integer>不能转成int[],但List<int[]>可以转成int[][],int[]数组类型也属于引用类型
Integer[] res = list.toArray(new Integer[0]);
//String类型
String[] res = list.toArray(new String[0]);
//int[]类型(转二维数组)
List<int[]> list = new ArrayList<>();
//第一个[]是list中int[]的数量,第二个[]是每个int[]的长度
int[][] res = list.toArray(new int[list.size()][]);
//不加参数就只能转换为Object类型数组
Object[] res = list.toArray();
数组转List:
方法一:(笨办法硬换)
//array为待转换int[]
List<Integer> list = new ArrayList<>();
for(int num : array){
list.add(num);
}
方法二:(Arrays.asList)
/*
!!!注意:asList的参数必须是对象数组,不能是基本类型数组。例如传入int类型数组,会把整个数组作一个元素,则前面必须用List<int[]>这种形式接收
*/
//这样直接转换后的list不能调用add和remove等方法
//这里创建的list是java.util.Arrays.ArrayList,并不是java.util.ArrayList
List<Integer> list = Arrays.asList(array);
//正确转换方式!
List<Integer> list = new ArrayList<>(Arrays.asList(array));
方法三:(List.of)
//这样直接转换后的list不能调用add和remove等方法,jdk9以上才有
List<Integer> list = List.of(array);
Set转数组:(和List一毛一样)
略
数组转Set:
方法一:(笨办法硬换)
//array为待转换int[],注意set会去重
Set<Integer> set= new HashSet<>();
for(int num : array){
set.add(num);
}
方法二:(Arrays.asList,同数组转List)
略
List转Set:
//list为待转换list
Set<Integer> set= new HashSet<>(list);
Set转List:
//set为待转换set
List<Inteter> list = new ArrayList<>(set);
相关文章
- 精通Java事务编程(2)-弱隔离级别之已提交读
- java中int转换为string的方法
- Java List简单操作
- java:List、Map、Set等初始容量、加载因子、扩容增量
- java中 List,Set,Map有什么具体区别?
- Java中 List、Set、Map遍历方式以及性能比较
- java:List、Map、Set默认初始容量和扩容增量及加载因子 & 内存泄漏 & 线程安全
- Java中 List、Set、Map 之间的区别
- java list算法问题(给定一 int 数组返回倒序的最大连续递增的区间(至少大于等于2)数组倒序)
- Java Array、List、Set互相转化
- Java--如何高效向List中存放不重复的数据(附带时间测试)
- Java删除List和Set集合中元素
- java.net.ServerSocket 解析
- 瞬间教你学会使用java中list的retainAll方法
- Java码农必须掌握的循环删除List元素的正确方法!
- 8张图带你深入理解Java
- Java编程介绍
- java之list源代码浅析
- java Arrays.copyOfRange使用方法
- java List转换和数组互转
- Java面试题(1)
- Java 基础面试题——异常
- Java测试List<Object>根据其某个属性去重俩种方法效率
- 一行代码实现java list去重
- Java 将List<Object> 转换成 Map<String, Map<String,List<Object>>>的几种方法
- 1042 字符统计(JAVA)
- 【Java基础系列】List,String,Set换转