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

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

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

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

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

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

例:

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

情景:從ListA 中取出userId與ListB中的userId做對(duì)比,當(dāng)其相等時(shí),取出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)建一個(gè)空的ListC, 遍歷 ListA取出userId添加到ListC中,之后,遍歷ListB并通過contains()方法將符合數(shù)據(jù)添加到list當(dāng)中。

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

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

舉個(gè)直觀的例子,循環(huán)的時(shí)候,同樣是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)號(hà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;
   }
  }
 }
}

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

相關(guān)文章

最新評(píng)論

鹤庆县| 虞城县| 云和县| 宁夏| 商洛市| 泊头市| 娱乐| 锡林郭勒盟| 如东县| 巴东县| 临沂市| 福州市| 县级市| 梓潼县| 库尔勒市| 永修县| 东山县| 施秉县| 新野县| 饶河县| 报价| 芮城县| 噶尔县| 华宁县| 中山市| 多伦县| 青川县| 肃南| 象州县| 天长市| 华宁县| 克东县| 织金县| 河津市| 昭觉县| 肇东市| 泸定县| 环江| 南丹县| 乐清市| 保康县|