CodeGym /وبلاگ جاوا /Random-FA /متد Arrays.asList() در جاوا
John Squirrels
مرحله
San Francisco

متد Arrays.asList() در جاوا

در گروه منتشر شد
بسیاری از مبتدیان مفهوم متد ()Arrays.asList را با ساختار داده ArrayList به هم می ریزند. حتی اگر به نظر شبیه به نظر برسند و به نظر برسند، این دو در هنگام اجرا کاملاً متفاوت هستند. در این پست، استفاده اساسی از متد ()Arrays.asList را پوشش خواهیم داد و برخی سردرگمی‌های رایج مرتبط با آن را برطرف خواهیم کرد.

چرا از Arrays.asList() استفاده می شود؟

اگر آرایه ای دارید که باید آن را به لیست تبدیل کنید، java.util.Arrays یک پوشش () Arrays.asList برای این منظور فراهم می کند. به عبارت ساده، این روش یک آرایه را به عنوان پارامتر می گیرد و یک لیست را برمی گرداند. بخش های عمده ای از API پلتفرم جاوا قبل از معرفی چارچوب مجموعه ها توسعه داده شد. بنابراین گاهی اوقات، ممکن است لازم باشد بین آرایه‌های سنتی و مجموعه‌های مدرن‌تر ترجمه کنید. این تابع به عنوان یک پیوند بین مجموعه ها و API های مبتنی بر آرایه عمل می کند.متد Arrays.asList() در جاوا - 1

مثال

به مثال زیر دقت کنید:

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

public class ArraysAsListDemo {
    public static void main(String[] args) {

	String[] teamMembers = {"Amanda", "Loren", "Keith"};
      // using aslist() method
	List teamList = Arrays.asList(teamMembers);
	System.out.println("List : " + teamList);

	HashSet teamHashSet = new HashSet<>(Arrays.asList(teamMembers));
	System.out.println("HashSet : " + teamHashSet);
    }
}
خروجی:
لیست : [آماندا، لورن، کیث] هش ست : [کیث، لورن، آماندا] // هش ست نظم را حفظ نمی کند

Arrays.asList() و ArrayList چگونه متفاوت هستند؟

هنگامی که متد Arrays.asList() را روی یک آرایه فراخوانی می کنید، شی برگشتی یک ArrayList نیست (یک آرایه قابل تغییر اندازه از رابط List ). این یک شی view با متدهای get() و set() است که به آرایه زیرین دسترسی دارد. تمام متدهایی که اندازه آرایه را تغییر می‌دهند ، مانند add() یا remove() تکرارکننده مرتبط، UnsupportedOperationException را پرتاب می‌کنند . دلیل اینکه برنامه جاوا با موفقیت کامپایل می شود اما یک استثنا در زمان اجرا می دهد این است که ظاهراً یک "List" در نتیجه Arrays.asList() برگردانده می شود . جایی که تمام عملیات افزودن/حذف مجاز است. اما از آنجایی که ساختار داده زیربنایی یک "آرایه" غیر قابل تغییر اندازه است ، بنابراین در زمان اجرا یک استثنا ایجاد می شود. در اینجا یک قطعه نشان می دهد که چگونه به نظر می رسد:

import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
   public static void main(String[] args) {
	Integer[] diceRoll = new Integer[6];	
      //using aslist() method
	List diceRollList = Arrays.asList(diceRoll);
	System.out.println(diceRollList);

	// using getters and setters to randomly access the list
	diceRollList.set(5, 6);
	diceRollList.set(0, 1);
	System.out.println(diceRollList.get(5));
	System.out.println(diceRollList.get(1));

	System.out.println(diceRollList);

	diceRollList.add(7); // Add a new Integer to the list
    }
}
خروجی:
[null, null, null, null, null, null] 6 null [1, null, null, null, null, 6] استثنا در رشته «اصلی» java.lang.UnsupportedOperationException در java.util.AbstractList.add(AbstractList. java:148) در java.util.AbstractList.add(AbstractList.java:108) در ArraysAsListDemo.main(ArraysAsListDemo.java:20)

مثال هایی برای استفاده از متد asList().

در جاوا SE 5.0، متد asList() دارای تعداد متغیری آرگومان اعلام شده است. به جای ارسال یک آرایه، می توانید عناصر جداگانه را نیز ارسال کنید. مثلا:

import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
    public static void main(String[] args) {
	List seasons = Arrays.asList("winter", "summer", "spring", "fall");
	List odds = Arrays.asList(1, 3, 5, 7, 9);

	System.out.println(seasons);
	System.out.println(odds);
    }
}
خروجی:
[زمستان، تابستان، بهار، پاییز] [1، 3، 5، 7، 9]

نتیجه

برای استفاده از Arrays.asList() باید به خاطر داشته باشید که این فقط یک متد wrapper برای ابزار شخصی شماست. آن را با ArrayList قاطی نکنید و به خاطر داشته باشید که یک "list" برمی گرداند. در ابتدا ممکن است برای انجام توابع اضافه/حذف خطا دریافت کنید، اما همه اینها با تمرین و درک مداوم برطرف می شود. بنابراین IDE خود را بزنید و یک تجربه یادگیری عالی داشته باشید!
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION