JAVA避免多层嵌套循环用到的一些小技巧 |
您所在的位置:网站首页 › Java循环嵌套 › JAVA避免多层嵌套循环用到的一些小技巧 |
在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 |