في جافا، مجموعة مصفوفة و قائمة هما أهم بنيات البيانات. في هذا القسم سوف نتعلم كيفية تحويل Java Array إلى قائمة. لقد أنشأنا أيضًا برامج جافا التي تحول المصفوفة إلى قائمة باستخدام أساليب جافا المختلفة.
تحويل المصفوفة إلى قائمة في جافا
مصفوفة جافا عبارة عن مجموعة من القيم المتعددة لنفس نوع البيانات. يمكن أن تحتوي المصفوفة على كائنات وأنواع بدائية. ذلك يعتمد على تعريف المصفوفة. إذا كان تعريف المصفوفة من النوع البدائي، فسيتم تخزين قيم المصفوفة في موقع الذاكرة المعدية. إذا كان المصفوفة تحتوي على عناصر كائنات، فسيتم تخزين العناصر في مقطع الكومة.
في جافا ، أ قائمة هي واجهة تنتمي إلى إطار عمل Java Collections. يقوم بتخزين العناصر في شكل كائنات بطريقة مرتبة ويحافظ على ترتيب الإدراج. يسمح لنا بتخزين القيم المكررة. الاقسام ArrayList , قائمة مرتبطة , المتجه و كومة ينفذ واجهة القائمة.
توفر Java خمس طرق لتحويل المصفوفة إلى قائمة وهي كما يلي:
- الطريقة الأصلية
- باستخدام طريقة Arrays.asList()
- باستخدام أسلوب Collections.addAll()
- باستخدام Java 8 Stream API
- استخدام طريقة الجوافة Lists.newArrayList()
الطريقة الأصلية
إنها أبسط طريقة لتحويل Java Array إلى قائمة. في هذه الطريقة، نقوم أولاً بإنشاء قائمة فارغة وإضافة جميع عناصر المصفوفة إلى القائمة. دعونا نرى مثالا.
ArrayToListExample1.java
import java.util.*; public class ArrayToListExample1 { public static void main(String args[]) { //creating an array String array[] = { 'Golf', 'Soccer', 'Baseball', 'Volleyball', 'Tennis', 'Badminton', 'Rugby', 'Archery', 'Skiing'}; //prints the array before conversion System.out.println('Array before conversion: '+ Arrays.toString(array)); //calling the generic function that converts Array into List List list = ArrayToListConversion(array); //print the List System.out.println('Array as List: ' + list); } //creating a generic function that converts the Array into List public static List ArrayToListConversion(T array[]) { //creating the constructor of the List class List list = new ArrayList(); //using for-each loop to iterate over the array for (T t : array) { //adding each element to the List list.add(t); } //returns the list converted into Array return list; } }
انتاج:
باستخدام طريقة Arrays.asList()
إنها طريقة فئة Java Arrays التي تنتمي إلى حزمة java.util. عندما نستخدم طريقة asList() مع طريقة Collection.toArray()، فإنها تعمل كجسر بين واجهات برمجة التطبيقات القائمة على المصفوفة والقائمة على المجموعة.
بناء الجملة:
public static List asList(T... a)
تقوم الطريقة بتوزيع مصفوفة كمعلمة سيتم من خلالها دعم القائمة. تقوم بإرجاع عرض قائمة ذات حجم ثابت قابل للتسلسل للمصفوفة المحددة. دعونا نرى مثالا.
ArrayToListExample2.java
import java.util.*; public class ArrayToListExample2 { public static void main(String args[]) { //creating an array to be converted String arr[] = { 'Aston Martin', 'Bugatti', 'Bentley', 'Alfa Romeo', 'Buick', 'Acura', 'Audi', 'BMW', 'Buick' }; //prints array before conversion System.out.println('Array before conversion: '+ Arrays.toString(arr)); //calling generic method that converts Array into List List list = ArrayToListConversion(arr); //prints the List System.out.println('Array after conversion: ' + list); } //creating a generic function that converts the Array into List public static List ArrayToListConversion(T arr[]) { //invoking the asList() method and passing the array to be converted List list = Arrays.asList(arr); //returns the list return list; } }
انتاج:
أنواع مراجع جافا
باستخدام أسلوب Collections.addAll()
وهي الطريقة مجموعات جافا فصل. إنه ينتمي إلى حزمة Java.util. يوفر الفصل أسلوب اسمه إضافة الجميع() . يمكننا استخدام الطريقة لتحويل المصفوفة إلى قائمة. يضيف كافة العناصر إلى المجموعة المحددة. يمكننا تحديد العناصر إما بشكل فردي أو في شكل مصفوفة. إنه يعمل بنفس الطريقة c.addAll(Arrays.asList(elements)). إنه تنفيذ أسرع من تنفيذ آخر.
بناء الجملة:
public static boolean addAll(Collection c, T... elements)
يقوم بتوزيع معلمتين:
يعود حقيقي إذا تغيرت المجموعة نتيجة المكالمة. يطرح الاستثناءات التالية:
- إذا كانت المعلمة c لا تدعم عملية الإضافة، فسيتم طرحها UnsupportedOperationException .
- إذا كانت عناصر المصفوفة المحددة تحتوي على قيمة فارغة واحدة أو أكثر وكان c لا يسمح بالعناصر الخالية، فسيتم طرحها NullPointerException .
- إذا منع أي عنصر من عناصر المصفوفة من إضافته إلى المعلمة c فسيتم طرحه IllegalPointerException .
دعونا نرى مثالا.
ArrayToListExample3.java
import java.util.*; public class ArrayToListExample3 { public static void main(String args[]) { //creating an Array to be converted String arr[] = { 'San Jose', 'Dallas', 'Chicago','San Antonio', 'Los Angeles', 'Portland', 'Tucson' }; //prints the Array System.out.println('Array before conversion: '+ Arrays.toString(arr)); //method calling List list = ArrayToListConversion(arr); //print the List System.out.println('Array after conversion: ' + list); } //creating a generic function that converts the Array into List public static List ArrayToListConversion(T arr[]) { //creating the constructor of thr List class List list = new ArrayList(); //the method adds Array to the List Collections.addAll(list, arr); //returns the list return list; } }
انتاج:
باستخدام Java 8 Stream API
يوفر Java 8 واجهة برمجة تطبيقات Stream لمعالجة مجموعات الكائنات. إنها سلسلة من الأساليب التي يمكن توصيلها لتحقيق النتيجة المرجوة. تذكر أنه لا يغير بنية البيانات الأصلية. ويوفر الإخراج على أساس الأساليب عبر خطوط الأنابيب. يمكننا تحقيق Stream بعدة طرق ولكن في البرنامج التالي استخدمنا Arrays.stream (كائن []) للوصول إلى الدفق.
طريقة Collectors.toList(): تُرجع الطريقة مُجمعًا يجمع عناصر الإدخال في قائمة تم إنشاؤها حديثًا في طريقة المواجهة.
بناء الجملة:
public static Collector<t,?,list> toList() </t,?,list>
حيث T هو نوع العنصر الذي حددناه. لا توفر الطريقة ضمانات بشأن النوع وقابلية التغيير وأمان الخيط وقابلية التسلسل.
طوبولوجيا النجوم
دعونا نستخدم Stream API في برنامج Java ونحول المصفوفة إلى قائمة.
ArrayToListExample4.java
import java.util.*; import java.util.stream.Collectors; public class ArrayToListExample4 { //creating a generic function that converts the Array into List public static List ArrayToListConversion(T arr[]) { //creates a list from the specified Array and returns the List return Arrays.stream(arr).collect(Collectors.toList()); } public static void main(String args[]) { //creating an array to be converted into List String arr[] = { 'Python', 'HTM', 'Java', 'C', 'C++', 'JavaScript', 'Ruby', 'Swift', 'PHP' }; //prints the Array before conversion System.out.println('Array: '+ Arrays.toString(arr)); //calling the method created above and storing the elements into the List object List list = ArrayToListConversion(arr); //prints the List System.out.println('List: ' + list); } }
انتاج:
استخدام قوائم الجوافة.newArrayList()
وهي الطريقة القوائم الفئة التي تنتمي إليها com.google.common.collect طَرد. يوفر الفصل طريقة قائمة الصفيف الجديدة () يقوم بإنشاء مثيل ArrayList فارغ قابل للتغيير يحتوي على عناصر المصفوفة المحددة.
بناء الجملة:
public static ArrayList newArrayList(E... elements)
ملاحظة: الأسلوب newArrayList() متاح لـ Java 6 والإصدارات السابقة. في الإصدارات اللاحقة تم إهماله. بدلاً من الطريقة المذكورة أعلاه، نستخدم مُنشئ ArrayList مباشرة.
ArrayToListExample5.java
import static com.google.common.collect.Lists.*; import java.util.*; public class ArrayToListExample5 { public static void main(String args[]) { //creating an Array to be converted into a List String arr[] = { 'Mango', 'Banana', 'Grapes', 'Apple', 'Plum', 'Blackberry', 'Papaya', 'Orange' }; //prints the Array before conversion System.out.println('Array: '+ Arrays.toString(arr)); //convert the Array to List List list = ArrayToListConversion(arr); //prints the List System.out.println('List: ' + list); } //creating a generic function that converts the Array into List public static List ArrayToListConversion(T arr[]) { //creates a List from the specified Array return Lists.newArrayList(arr); } }
انتاج: