دوره زبان تخصصی برای برنامه‌نویسان (هدیه ویژه ثبت‌نام در دوره‌های متخصص) (فرصت محدود ⏰)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ رحیم
علت کپی کردن listFiles در متغیر filteredList چیست
پوریا شفیعی حل شده توسط پوریا شفیعی

سلام خسته نباشید 

من یه سوال داشتم در مورد متد سازنده اداپتور اونم این است که استاد برای مقدار دهی listFile‌ها کلاس ArrayList  رو صدا زدند و بعد list رو داخل کلاس arrayList ریختن و فرمودند که اول باید یه کپی از fileها رو بگیریم بعد داخب listfile بریزیم می‌خواستم بدونم که این کلاس arraylist چطور کپی می‌گیره و دقیقا کارش اونجا چیه ؟؟ 

سلام و احترام

 

فرض کنید int a = 5 هست حال ما متغیری با نام b تعریف نموده و مقدار a را در ان میریزیم یعنی int b = a دقیقا این کاری که داریم انجام میدیم deep copy میگویند .  حال وقتی مینویسیم this.filteredFiles = this.files; به عبارتی داریم همین عمل کپی رو انجام میدیم(احتمالا بخاطر استفاده شدن واژه کپی در این سر فصل شما یکم سردرگم شده باشید ولی این دقیقا همون چیزی هست که قبلا هم میدونستید).

اما چرا کپی میگیریم؟ ببینید من قبل از هر چیز پیشنهاد میکنم شما همین تمرین رو انجام بدید که اگر این عمل کپی انجام نشود چه مشکلی روی میدهد دلیلش این هست که هنگامی که کاربر موردی رو سرچ میکند اگر query.length() > 0 باشد باید لیست فیلتر شده مربوط به عمل سرچ را در متغیر filteredFiles ریخته تا ایتم‌های فیلتر شده نمایش داده شود.

در غیر این صورت باید کل ایتم‌های موجود را نمایش دهد.

اینکه عمل کپی در collection‌ها انجام میشود بحث ساختمان داده ای بوده که باید این مورد رو نحوه copy در collection‌ها بررسی کنید :

منبع :

https://www.javatpoint.com/collections-in-java

یاداوری :

public void search(String query) {
        if (query.length() > 0) {
            List<File> result = new ArrayList<>();
            for (File file :
                    this.files) {
                if (file.getName().toLowerCase().contains(query.toLowerCase())) {
                    result.add(file);
                }
            }
            this.filteredFiles = result;
            notifyDataSetChanged();
        } else {
            this.filteredFiles = this.files;
            notifyDataSetChanged();
        }
    }
بهترین پاسخ
پوریا شفیعی ۱۰ آذر ۱۳۹۹، ۰۸:۵۰