cari

Rumah  >  Soal Jawab  >  teks badan

Adakah tidak baik untuk menambah panjang badan gelung apabila menggunakan java untuk gelung?

   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? ?

某草草某草草2708 hari yang lalu863

membalas semua(7)saya akan balas

  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-28 09:25:52

    Jangan gunakan for(:){},用 for(int i = 0; i < list.size(); i++), berhati-hati untuk tidak membuat gelung tak terhingga

    balas
    0
  • 大家讲道理

    大家讲道理2017-06-28 09:25:52

    Dalam 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.

    balas
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-28 09:25:52

    Anda tidak boleh mengendalikan senarai (tambah, alih keluar, dsb.) dalam foreach

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-28 09:25:52

    Jika anda ingin melompat keluar dari gelung dua peringkat secara langsung, terdapat dua cara sahaja:

    1. Gunakan sintaks break label (Saya tidak pernah menggunakan ini sebelum ini, anda boleh Google

    2. ).
    3. Itu kaedah yang anda gunakan, tetapkan bendera.

    Juga, city的复数是cities而不是citys.

    balas
    0
  • 世界只因有你

    世界只因有你2017-06-28 09:25:52

    Ini adalah perjalanan yang panjang untuk menulis. Kata-kata saya akan ditulis seperti ini:

    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;
    }

    Terdapat beberapa kawasan yang perlu dioptimumkan dalam kod asal anda:

    1. Cuba elakkan gelung berganda, gelung dalam biasanya perlu diekstrak;

    2. Untuk operasi pada pembolehubah yang sama, baris kod hendaklah dikumpulkan bersama sebanyak mungkin supaya ia dibaca dengan lebih semula jadi

    3. 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.

    balas
    0
  • 为情所困

    为情所困2017-06-28 09:25:52

    Saya tidak faham apa yang anda tanya..Adakah kerana jika tidak boleh masuk?

    balas
    0
  • 滿天的星座

    滿天的星座2017-06-28 09:25:52

    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.

    balas
    0
  • Batalbalas