Sobes.tech
Junior — Middle

Бардык өзгөртүлбөйтүнү камсыз кылган тизмени кандай алууга болот?

sobes.tech AI

AIден жооп

Javaда бар болсо да, ArrayList негизинде өзгөртүлбөс (immutable) тизмени алуу үчүн, Collections.unmodifiableList() ыкмасын колдонсо болот. Бул ыкма оригиналдык тизмеге үстүнөн капкак салат жана анын мазмунун берилген интерфейс аркылуу өзгөртүүгө жол бербейт.

Мисал:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

ArrayList<String> өзгөртүлүүчүТизм = new ArrayList<>();
өзгөртүлүүчүТизм.add("Элемент 1");
өзгөртүлүүчүТизм.add("Элемент 2");

List<String> өзгөртүлбөсТизм = Collections.unmodifiableList(өзгөртүлүүчүТизм);

// өзгөртүлбөсТизмди өзгөрүүгө аракет кылуу UnsupportedOperationException калыптандырат
// өзгөртүлбөсТизм.add("Жаңы элемент"); // Ката!

Маанилүү: эгер оригиналдык өзгөртүлүүчүТизм өзгөрсө, өзгөртүүлөр өзгөртүлбөсТизмда да көрүнөт, анткени бул жай гана капкак. Толук өзгөртүлбөстүк үчүн, тизмени көчүрүп, аны капкактай турган керек:

List<String> чындыктаӨзгөртүлбөсТизм = Collections.unmodifiableList(new ArrayList<>(өзгөртүлүүчүТизм));