Sobes.tech
Junior — Middle

Чӣ гуна метавон рӯйхати тағйирнопазирро дар асоси List-и мавҷудаи ArrayList ба даст овард?

sobes.tech AI

Ҷавоб аз AI

Барои ба даст овардани рӯйхати ғайрифаъол (immutable) дар асоси рӯйхати мавҷудаи ArrayList дар Java, шумо метавонед усули Collections.unmodifiableList()-ро истифода баред. Ин усул як пӯшишро дар болои рӯйхати аслӣ бармегардонад, ки имкон намедиҳад, ки мундариҷаро тавассути интерфейси пешниҳодшуда тағир диҳед.

Масалан:

импорт java.util.ArrayList;
импорт java.util.Collections;
импорт java.util.List;

ArrayList<String> рӯйхатиМутобиқшаванда = нав ArrayList<>();
рӯйхатиМутобиқшаванда.add("Элемент 1");
рӯйхатиМутобиқшаванда.add("Элемент 2");

List<String> рӯйхатиНамоъ = Collections.unmodifiableList(рӯйхатиМутобиқшаванда);

// кӯшиши тағир додани рӯйхатиНамоъ боиси хатогии UnsupportedOperationException мешавад
// рӯйхатиНамоъ.add("Элемент нав"); // Хатогӣ!

Муҳим аст, ки дар хотир дошта бошед, ки агар рӯйхати аслӣ рӯйхатиМутобиқшаванда тағир ёбад, тағиротҳо дар рӯйхатиНамоъ низ намоён хоҳанд шуд, зеро ин танҳо як пӯшиш аст. Агар тамоман ғайрифаъол кардан лозим бошад, бояд нусхаи рӯйхатро созед ва онро пӯшонед:

List<String> рӯйхатиКомиланНамоъ = Collections.unmodifiableList(new ArrayList<>(рӯйхатиМутобиқшаванда));