Java中 数组与集合,集合与集合之间的转换

Java中 数组与集合,集合与集合之间的转换,第1张

这里介绍的主要是调用Arrays、Collections工具类和stream 流的方式

数组转List

这里就以数组转List为例进行介绍

1、通过Arrays.asList(你想要转换的数组)

但是通过这一点转换出来的list集合是不能进行增删的,只能修改和删除。

2、通过ArrayList构造器转换

还是第一条的list集合,我们可以通过new ArrayList(Arrays.asList(xxx))达到转化效果。

此时的list集合是可以进行增删改查的

3、通过stream流的方式
//这里我们就以int型数组为例
int[] nums = {1,2,3,4}
List list = Arrays.stream(nums).boxed().collect(Collectors.toList);

//如果是String类型数组就使用
String[] strs = {"123","432","789"};
List list= Stream.of(arrays).collect(Collectors.toList());
List转数组
int[] intArr = list.stream().mapToInt(Integer::intValue).toArray(); //list转数组
集合之间互相转换

这里就主要分享一下自己stream的使用,通过集合的构造方法来进行转换这里就不多加赘述啦

1、List与Set之间转换

例如我们通过数据库查询到一个订单号集合set的时候,需要将其转换为list,我们可以

List collect = orderNoSet.stream().collect(Collectors.toList());

但是在很多也业务开发的时候,并不是这么简单的转换。比方说有一个Order订单类,我们通过数据库查询返回了一个该类的List集合,那假如我们想得到一个该类的id的set集合怎么做呢??不会还真有人傻傻遍历一边再将id装到新集合中吧~

其实我们可以这样,通过map来进行一个匹配选择

//从数据库中拿到实例对象集合
List orderList = orderMapper.selectByUid(uid);

//转换
Set orderNoSet = orderList.stream().map(Order::getOrderNo).collect(Collectors.toSet());

2、List和Map之间的转换

还是接着上面的问题,那如果我想从list中抽出一个map集合呢?

一个订单号就对应一个订单实例对象怎么实现

也很简单,我们通过调用Collectors的toMap方法

Map orderMap=orderList.stream()
                .collect(Collectors.toMap(Order::getOrderId,order -> order));

PS:说到这里还想分享一下filter方法的应用

还是以order集合为例,假如说Order类中有一个属性tag(Boolean类型)表示订单是否生效,那我们想要过滤出生效的订单

//这里的list表示包含所有order实例对象的集合
List orderList = list.stream()
                .filter(Order::getOrderSelected)
                .collect(Collectors.toList());

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/794609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存