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);
}
}
Sebagai contoh, dalam kod di atas, jika saya tidak memasuki tahap kedua bagi gelung, saya akan melakukan operasi tambah pada senarai. Seharusnya tiada masalah di sini, kerana apa yang saya kendalikan dalam badan gelung pertama adalah saiz() gelung kedua. Saya masih ingat situasi di mana for(){...} saya mengendalikan secara langsung saiz() for in... Ini nampaknya mustahil pada mulanya, tetapi saya tidak dapat memikirkannya buat masa ini. Bolehkah mana-mana tuan membantu saya mengingati kenangan itu? ?
Jangan gunakan
for(:){}
,用for(int i = 0; i < list.size(); i++)
, berhati-hati untuk tidak membuat gelung tak terhinggaDalam untuk setiap, iaitu gelung for(a : as) dalam kod anda, anda tidak boleh menambah atau memadam koleksi bergelung, jika tidak ConcurrentModificationException akan dilaporkan
Tiada masalah dalam kod ini. Kerana semua operasi anda menukar senarai dilakukan di luar gelung dalaman.
Bergantung pada keperluan anda sebenarnya untuk mengira data setiap bandar mengikut wilayah. Jika anda mempunyai syarat untuk menggunakan Java 8, anda boleh melihat kaedah GroupBy Stream. Boleh sangat memudahkan kod.
Untuk beberapa isu yang tidak berkaitan, kaedah yang ditetapkan untuk menetapkan senarai adalah tidak sesuai.
Jika ia adalah objek dengan logik perniagaan, struktur dalaman hendaklah dibungkus dan antara muka hendaklah disediakan berdasarkan konsep domain perniagaan, dan koleksi dalaman tidak boleh didedahkan secara langsung.
Walaupun ia adalah objek pemindahan data, ia tidak sepatutnya menyediakan kaedah set atribut pengumpulan. Secara umum, kitaran hayat pembolehubah koleksi peribadi harus diurus oleh objek induknya. Dunia luar mengendalikan koleksi peribadi melalui kaedah tambah atau buang objek pembungkusan luar. Jika perlu, sediakan kaedah dapatkan koleksi. Anda perlu mempertimbangkan sama ada untuk menyalin atau menjadikannya tidak berubah.
Anda tidak boleh mengendalikan senarai (tambah, alih keluar, dsb.) dalam foreach
Jika anda ingin melompat keluar dari gelung dua peringkat secara langsung, terdapat dua cara sahaja:
Gunakan sintaks
break label
(Saya tidak pernah menggunakan ini sebelum ini, anda boleh GoogleItu kaedah yang anda gunakan, tetapkan bendera.
Juga,
city
的复数是cities
而不是citys
.Ini adalah perjalanan yang panjang untuk menulis. Kata-kata saya akan ditulis seperti ini:
Terdapat beberapa kawasan yang perlu dioptimumkan dalam kod asal anda:
Cuba elakkan gelung berganda, gelung dalam biasanya perlu diekstrak;
Untuk operasi pada pembolehubah yang sama, baris kod hendaklah dikumpulkan bersama sebanyak mungkin supaya ia dibaca dengan lebih semula jadi
Penamaan pembolehubah harus mencerminkan maksud perniagaan dan jenis utamanya Sebagai contoh, objek Senarai hendaklah dinamakan xxxList sebanyak mungkin. Saya malas nak ubah ini untuk awak.
Saya tidak faham apa yang anda tanya..Adakah kerana jika tidak boleh masuk?
Susun fikiran anda sebelum bertanyakan apa yang anda ingin tanyakan? Apakah jawapan yang anda harap dapat? Jika tidak, orang lain tidak akan dapat menjawabnya untuk anda.