بسیاری از مبتدیان مفهوم متد ()Arrays.asList را با ساختار داده ArrayList به هم می ریزند. حتی اگر به نظر شبیه به نظر برسند و به نظر برسند، این دو در هنگام اجرا کاملاً متفاوت هستند. در این پست، استفاده اساسی از متد ()Arrays.asList را پوشش خواهیم داد و برخی سردرگمیهای رایج مرتبط با آن را برطرف خواهیم کرد.
چرا از Arrays.asList() استفاده می شود؟
اگر آرایه ای دارید که باید آن را به لیست تبدیل کنید، java.util.Arrays یک پوشش () Arrays.asList برای این منظور فراهم می کند. به عبارت ساده، این روش یک آرایه را به عنوان پارامتر می گیرد و یک لیست را برمی گرداند. بخش های عمده ای از API پلتفرم جاوا قبل از معرفی چارچوب مجموعه ها توسعه داده شد. بنابراین گاهی اوقات، ممکن است لازم باشد بین آرایههای سنتی و مجموعههای مدرنتر ترجمه کنید. این تابع به عنوان یک پیوند بین مجموعه ها و API های مبتنی بر آرایه عمل می کند.مثال
به مثال زیر دقت کنید:
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]
GO TO FULL VERSION