كيفية عكس صفيف من int / String في Java

في هذا البرنامج التعليمي ، سننظر في كيفية عكس عناصر الصفيف في Java.

قد يبدو عكس المصفوفة أمرا سهلا للغاية! يبدو هكذا لأنك كل ما عليك فعله هو إنشاء جدول من نفس الحجم ، وتصفح الجدول الأصلي من البداية إلى البداية وملء الجدول الجديد ، وهذا كل شيء! كان لديك مصفوفة عناصرها بترتيب عكسي للصفيف الأصلي ، ولكن المشكلة تكمن في أنك استخدمت مصفوفة إضافية هنا ستشغل مساحة كبيرة إذا كانت كبيرة جدا من تعقيد O (n). تخيل أن لوحتك تحتوي على 1 مليون عنصر وليس لديك مساحة كافية. السؤال هو ، هل يمكننا عكس الصورة دون اللجوء إلى طاولة إضافية تشغل مساحة كبيرة؟ مفتاح الحل هنا هو فهم ما تحتاجه لعكس المصفوفة دون استخدام مخزن مؤقت مؤقت ، ولكن يمكنك استخدام متغير لتخزين القيم.

يمكنك أيضا استخدام مكتبات مفتوحة المصدر مباشرة أو طرق java.util.Arrays أو java.util.Collections.

العودة إلى الطريقة اليدوية لتبديل العناصر حتى تصل نقطة المنتصف ، عن طريق تخزين القيمة الحالية في المتغير المؤقت في كل مرة لتجنب الكتابة فوقها على النحو التالي:

< pre class = "prettyprint lang-java" > public class reverse_Array {

الفراغ الثابت العام الرئيسي (سلسلة [] args) {
int [] صفيف = {1 ، 2, 3, 4};

//display الأعداد الصحيحة للصفيف
for(int i = 0; i < array.length ؛ i ++)
{
System.out.println(array[i]);
}
// عناصر صفيف معكوسة
for (int i = 0 ؛ i < array.length / 2 ؛ i ++)
{
int temp = array[i] ؛
صفيف [i] = صفيف [صفيف الطول - ط - 1] ؛
صفيف [صفيف الطول - ط - 1] = درجة الحرارة ؛
}
//display الأعداد الصحيحة للصفيف المقلوب
System.out.println ("صفيف مقلوب") ؛
for (int i = 0 ؛ i < array.length ؛ i ++)
{
System.out.println (ararray [i]) ؛
}
}
}
< / pre>ينتج عن تجميع وتنفيذ هذا الرمز ما يلي:

< pre class = "prettyprint lang-java" >1
2
3
4
array
4
3
2
1
لماذا نتوقف في المنتصف؟ لأنه عندما نصل إلى المنتصف ، قمنا فقط بعكس جميع القيم وإذا تابعت حتى نهاية المصفوفة ، فإنك تعكس كل عنصر مرتين ، ثم تكون النتيجة هي نفسها.

عكس مصفوفة في Java باستخدام طريقة ArraysUtils.reverse () < / h2>باستخدام مكتبة Java الخاصة ب Commons lang ، تحتوي واجهة برمجة تطبيقات java.lang على طرق مثل معالجة السلاسل والطرق الرقمية ... انقر فوق download java.lang  واستيراده إلى مشروعك.

يمكنك بسهولة استخدام الطريقة  ArrayUtils< / span>.< / span>عكس< / span> (< / span >int< / span>[]< / span> صفيف < / span >< span class = "pun" style = "لون الخلفية: #eeeeee ؛ الحدود: 0 بكسل ؛ عائلة الخط: " كونسولاس" , " مينلو" , " موناكو" , " لوحات مفاتيح لوسيدا , " التحرير الأحادي , " ديجافو بدون مونو" , " بيتستريم فيرا بدون مونو" , " ساعي جديد" ، ميني فان ، بلا شريف. حجم الخط: 13px; الهامش: 0 بكسل ؛ الحشو: 0 بكسل ؛ مسافة بيضاء: وراثة ؛" >) < / span >

< pre class = "prettyprint lang-java" >import java.util.Arrays ؛
import org.apache.commons.lang3.ArrayUtils;

reverse_array_strings الفئة العامة {

الفراغ العام الثابت الرئيسي (سلسلة [] args) {
سلسلة [] string_array = {"أ" ، "ب" ، "ج"} ؛

// سلاسل صفيف العرض
for (int i = 0 ؛ i < string_array.length ؛ i ++)
{
System.out.println (string_array [i]) ؛
}
// عناصر صفيف معكوس < br / > ArrayUtils.reverse (string_array) ؛

// عرض سلاسل الصفيف المقلوب
System.out.println ("صفيف مقلوب") ؛
for(int i = 0; i < string_array.length ؛ i ++)
{
System.out.println(string_array[i]);
}
}
}
< / pre>إليك ما يعطيه هذا الرمز كإخراج:

< pre class = "prettyprint lang-java" >a
b
c
array
c
b
a
معظم الوقت، يعد استخدام المكتبة بسهولة أسرع وأكثر أمانا لأنه يوفر عليك الأخطاء ويتم اختباره بواسطة محرريها.

استخدام طريقة Collections.reverse()

تعمل هذه الطريقة فقط مع java object collections، لذلك نحتاج إلى تحويل صفيفنا إلى نمط java.util.List
بالطريقة Arrays.asList () < / span> ، ثم اتصل بالطريقة Collections.reverse() وأخيرا قم بتحويل كائن القائمة إلى مصفوفة بالطريقة toArray().

import java.util.Arrays; 
import java.util.Collections;
import java.util.List;
reverse_array_list العامة {
الفراغ العام الثابت الرئيسي (سلسلة [] args) {
كائن [] string_objects ={"abc" ، 12 ، 54 ، 'c' ، 99} ؛

// سلاسل صفيف العرض
for (int i = 0 ؛ i < string_objects.length ؛ i ++)
{
System.out.println (string_objects [i]) ؛
}

//تحويل الصفيف إلى قائمة
قائمة< الكائن> قائمة = Arrays.asList (string_objects) ؛
// عكس الكائنات في صفيف < br / > Collections.reverse (قائمة) ؛
//احصل على المصفوفة من القائمة
string_objects = list.toArray();

//عرض سلاسل الصفيف المقلوب
System.out.println ("صفيف مقلوب من الكائنات") ؛
for(int i = 0; i < string_objects.length ؛ i++)
{
System.out.println(string_objects[i]);
}
}
}
< / pre>النتيجة:

< pre class = "prettyprint lang-java">abc
12
54
c
99
صفيف من الكائنات المقلوبة
99
c
54
12
abc
المراجع:
Stackoverflow: كيف يمكنني عكس مصفوفة int في Java؟< / a>
Commons lang: Java.lang API
كيفية عكس الصفيف في مكانه في Java؟< / a>< / div>