JAVA避免多层嵌套循环用到的一些小技巧

您所在的位置:网站首页 Java循环嵌套 JAVA避免多层嵌套循环用到的一些小技巧

JAVA避免多层嵌套循环用到的一些小技巧

2023-11-12 04:58| 来源: 网络整理| 查看: 265

在JAVA开发中,我们经常遇到一些写二重循环甚至更多循环的情况,但是,这种循环会造成很多资源浪费。 因为X次循环下套用Y次循环,相当于总共执行了X * Y次运算,因此,我们应尽量避免多重嵌套的情况。

例: (1)借用第三个List,使用Contains()方法

情景:从ListA 中取出userId与ListB中的userId做对比,当其相等时,取出ListB中该条数据。

public List getDetail(List listA, List listB) { List list= new ArrayList(); List listC = new ArrayList(); for(AttendanceInfo attendanceInfo: attendanceList){ listC.add(attendanceInfo.getUserId()); } for (CardInfo cardInfo: cardList){ if (! listC.contains(cardInfo.getUserId())){ list.add(cardInfo); } } return list; }

我们可以先创建一个空的ListC, 遍历 ListA取出userId添加到ListC中,之后,遍历ListB并通过contains()方法将符合数据添加到list当中。

(2)数据量大,使用HashSet 虽然 contains()方法可以进行判断,但是当数据量极大时,我们借用的第三个List就不要使用ArrayList了,最好使用HashSet,这跟他们的底层数据结构有关系。举个直观的例子,循环的时候,同样是20W条数据,ArrayList的contains()方法跑了2分钟,HashSet的contains()方法跑了 1秒!!!!

(3)JAVA8及以上使用lambda表达式 Java8引进了lambda表达式和流模式,比如map.reduce,详情可百度学习下lambda写法。

本文持续更新,想到哪写到哪,欢迎大家告诉我更多思路,万分感谢!!!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3