这里介绍的主要是调用Arrays、Collections工具类和stream 流的方式
数组转List这里就以数组转List为例进行介绍
1、通过Arrays.asList(你想要转换的数组)但是通过这一点转换出来的list集合是不能进行增删的,只能修改和删除。
2、通过ArrayList构造器转换还是第一条的list集合,我们可以通过new ArrayList
此时的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());
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)