最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java避免多層嵌套循環(huán)用到的一些小技巧分享

 更新時間:2022年10月08日 08:34:43   作者:這名字好厲害O  
這篇文章主要介紹了java避免多層嵌套循環(huán)用到的一些小技巧分享,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

避免多層嵌套循環(huán)用到的小技巧

在JAVA開發(fā)中,我們經(jīng)常遇到一些寫二重循環(huán)甚至更多循環(huán)的情況,但是,這種循環(huán)會造成很多資源浪費(fèi)。

因?yàn)閄次循環(huán)下套用Y次循環(huán),相當(dāng)于總共執(zhí)行了X * Y次運(yùn)算,因此,我們應(yīng)盡量避免多重嵌套的情況。

例:

(1)借用第三個List,使用Contains()方法

情景:從ListA 中取出userId與ListB中的userId做對比,當(dāng)其相等時,取出ListB中該條數(shù)據(jù)。

public List getDetail(List<AttendanceInfo > ?listA, List<CardInfo > 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;
? ? }

我們可以先創(chuàng)建一個空的ListC, 遍歷 ListA取出userId添加到ListC中,之后,遍歷ListB并通過contains()方法將符合數(shù)據(jù)添加到list當(dāng)中。

(2)數(shù)據(jù)量大,使用HashSet

雖然 contains()方法可以進(jìn)行判斷,但是當(dāng)數(shù)據(jù)量極大時,我們借用的第三個List就不要使用ArrayList了,最好使用HashSet,這跟他們的底層數(shù)據(jù)結(jié)構(gòu)有關(guān)系。

舉個直觀的例子,循環(huán)的時候,同樣是20W條數(shù)據(jù),ArrayList的contains()方法跑了2分鐘,HashSet的contains()方法跑了 1秒?。。?!

(3)JAVA8及以上使用lambda表達(dá)式

Java8引進(jìn)了lambda表達(dá)式和流模式,比如map.reduce,詳情可百度學(xué)習(xí)下lambda寫法。

跳出java中的多層嵌套循環(huán)

使用 break 標(biāo)號語句跳出嵌套循環(huán):

public static void main(String[] args) {
 javastack:
 for (int i = 0; i < 10; i++) {
  for (int j = 0; j < 10; j++) {
   System.out.println("i="+i+"?j="+j);
   if (j == 3) {
    break javastack;
   }
  }
 }
}

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

佛坪县| 台湾省| 迁安市| 确山县| 沈丘县| 新昌县| 安乡县| 黄石市| 尤溪县| 宁乡县| 英超| 五台县| 西乡县| 延长县| 沙湾县| 博乐市| 方城县| 大城县| 杨浦区| 锡林浩特市| 阿瓦提县| 南郑县| 奉化市| 西乌| 江油市| 准格尔旗| 华亭县| 池州市| 达尔| 龙口市| 临泽县| 葫芦岛市| 大渡口区| 当阳市| 开阳县| 淮安市| 新竹县| 慈溪市| 成武县| 岚皋县| 集安市|