Java控制列表多层循环带来的时间复杂度

Java控制列表多层循环带来的时间复杂度

前言

当需要有两个或者多个列表循环来获取所需值时,应考虑列表多层循环带来的时间复杂度,这篇文章记录我的解决方法。

解决方案

当需要多个列表循环获取所需列表或值时:

List<User> userList = new ArrayList<User>();
List<Score> scoreList = new ArrayList<Score>();

此时我们需要判断哪些人考试了:

//转换为Map,减少时间复杂度(stream流为Java8新特性)
Map<Integer, User> collect = data.stream().collect(Collectors.toMap(User::getId, user-> user));

此时我们已经将用户列表转换为了一个以用户ID为键,以用户为值的Map;

List<User> testsUser  = new ArrayList<User>();
for (Score score : scoreList) {
	User user = collect.get(score.getUserId());
	if (!ObjectUtils.isEmpty(user)){
	    testsUser.add(user);
	}
}

这个时候我们就拿到了拥有成绩的用户,且时间复杂度比双层循环要低得多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值