Кайырдуу күн. Маселе
Карта жыйнагынан элементтерди кантип алып салууда турат . Мен дагы бир маселени чечүүгө аракет кылып жатам жана мен алдыга жыла албайм, анткени жыйнактан өчүрүү кандай принципте болуп жатканын түшүнбөйм. Идея коллекциядан окшош элементтерди алып салуу, салыштыруу баалуулук боюнча жүргүзүлөт. 8-деңгээлдеги лекциялардан мен "итератор" биздин коллекцияга шилтеме сыяктуу бир нерсе экенин түшүндүм. Ошондуктан, мен ушундай 2 шилтемени түздүм жана коллекциядагы элементтерди салыштырып, бул шилтеме (an object) iterator2 шилтеме кылган элементтерди жок кылууну чечтим. Эмне үчүн туура эмес кылып жатканымды түшүндүрүңүз. Мен чындап эле кайсы жерден жаңылып жатканымды түшүнгүм келет. Жооп бергендердин баарына рахмат. Коллекциядан алып салууну ишке ашыруунун дагы бир варианты
for (Iterator
> iterator1 = map.entrySet().iterator(); iterator1.hasNext();){ HashMap.Entry
pair1 = iterator1.next(); for (Iterator
> iterator2 = map.entrySet().iterator(); iterator2.hasNext();) { HashMap.Entry
pair2 = iterator2.next(); if(pair1.getValue().equals(pair2.getValue())){ map.remove(pair2.getKey()); } } }
Iterator
> iterator1 = map.entrySet().iterator(); while(iterator1.hasNext()){ Map.Entry
pair1 = iterator1.next(); Iterator
> iterator2 = map.entrySet().iterator(); while(iterator2.hasNext()){ Map.Entry
pair2 = iterator2.next(); if (pair1.getValue().equals(pair2.getValue())){ iterator2.remove(); } } }
GO TO FULL VERSION