亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

java for循環的時候增加循環體的長度是不是不太好的?

瀏覽:122日期:2023-10-23 17:57:45

問題描述

for(CityDataVO cityItem: citys){boolean flag =false;for(ProvinceDataVO proItem : list){ xxxxxx flag = true; break;}if(!flag){ ProvinceDataVO province = new ProvinceDataVO(); province.setProvinceId(cityItem.getProvinceId()); province.setProvinceName(cityItem.getProvinceName()); province.setReportNum(cityItem.getCount()); List<CityDataVO> vo = new ArrayList<>(); vo.add(cityItem); province.setCityData(vo); list.add(province);} }

比如上面的代碼,如果我沒有進入第二層的for循環里,我就會對list進行一個add的操作。這里應該是沒有問題的,因為我在第一個for循環體里操作的是第二個for循環的size()。我記得有一個情景是for(){...}我直接在...操作了for的size(),這樣好像是不行的,當初好像有一個什么辦法的,我暫時想不到了,哪位大神幫我回憶回憶呵??

問題解答

回答1:

不要用 for(:){},用 for(int i = 0; i < list.size(); i++),小心不要搞成死循環

回答2:

在for each,也就是你的代碼里 for(a : as)的循環中,不能對被循環集合進行增加或刪除操作,否則會報ConcurrentModificationException.在這段代碼里是沒有問題的。因為你改變list的操作都是在內層循環之外做的。

看你的需求其實就是按省統計各市的數據。有條件使用Java 8的話,可以看看Stream的GroupBy方法??梢源蟠蠛喕a。

一些不相太干的問題,set方法設置一個list的方式是不太合適的。

如果是有業務邏輯的對象,應該對內部結構進行包裝后以業務領域的概念提供接口,而不應該直接暴露內部的集合。

即便是數據傳遞對象,也不應該提供集合屬性的set方法。一般而言,私有集合變量的生命周期應該由它的父對象管理。外界通過外面包裝對象的add或remove方法操作私有的集合。如果需要提供集合方式的get方法。需要考慮是否要進行copy或者使之不可變。

回答3:

不能在foreach里操作list(add,remove等操作)

回答4:

希望直接跳出兩層循環,無非是兩種辦法:

用break label的語法(這個我從沒用過,可以Google一下);

就是你用的辦法,設個標志位。

另外,city的復數是cities而不是citys。

回答5:

這寫得啰嗦了。我的話先這樣寫:

for (CityDataVO cityItem: citys){ if (validateCityItem(cityItem, list)) {continue; } List<CityDataVO> vo = new ArrayList<>(); vo.add(cityItem); ProvinceDataVO province = new ProvinceDataVO(); province.setProvinceId(cityItem.getProvinceId()); province.setProvinceName(cityItem.getProvinceName()); province.setReportNum(cityItem.getCount());province.setCityData(vo);list.add(province);}...private boolean validateCityItem(CityDataVO cityItem, List<ProvinceDataVO> list) { for(ProvinceDataVO proItem : list){if (...) { return true;} }return false;}

你的原代碼有幾個需要優化的地方:

盡量避免雙重循環,內循環一般都應該提取出來;

對同一個變量的操作,代碼行盡可能集中在一起,這樣閱讀起來更自然;

變量命名應當表現其業務含義和主要類型,比如 List 對象盡量都用 xxxList 方式命名。這我懶得給你改了。

回答6:

不明白你到底問什么..是if進不去嗎?

回答7:

提問前先組織好自己的思路,你想問的是什么?你希望得到什么回答?不然其他人幫不了你回答。

標簽: java
相關文章:
主站蜘蛛池模板: 久久国产精品一区 | 香蕉视频在线观看黄 | 在线看黄免费 | 国产不卡在线观看 | 成人小视频在线免费观看 | 国产精品久久久久一区二区 | 亚洲无限乱码一二三四区 | 91精品国产91久久 | 午夜久久免影院欧洲 | 欧美在线观看网站 | 日韩欧美一区二区三区免费观看 | 非洲一区二区三区不卡 | 福利视频一区二区 | 久久成人小视频 | 亚洲激情视频图片 | 欧美日韩一区二区三区久久 | 免费中文字幕乱码电影麻豆网 | 4438成人成人高清视频 | 欧美洲精品亚洲精品中文字幕 | 青草视频免费在线观看 | 欧美不卡精品中文字幕日韩 | 成人欧美精品久久久久影院 | 精品视频网 | 国产99r视频精品免费观看 | 久久精品成人欧美大片免费 | 麻豆视频在线免费看 | 日韩综合网站 | 一区二区三区免费视频播放器 | 国产综合视频在线观看 | 999yy成年在线视频免费看 | chinese在线播放91国内 | 在线观看网站 | 欧美日韩成人在线观看 | 日韩免费一区二区三区 | 亚洲国产成人精品激情 | 亚洲国产综合在线 | 正在播放国产乱子伦视频 | 国产精品理论片在线观看 | 韩国一级特黄清高免费大片 | 国产性videostv另类极品 | 成人免费一级片 |