مصفوفة السلاسل في جافا إلى سلسلة

اليوم سنتناول كيفية تحويل مصفوفة السلاسل في جافا إلى سلسلة نصية. في بعض الأحيان يجب علينا تحويل مصفوفة السلاسل إلى سلسلة نصية لتلبية متطلبات محددة. على سبيل المثال؛ قد نرغب في تسجيل محتويات المصفوفة أو نحتاج إلى تحويل قيم مصفوفة السلاسل إلى سلسلة نصية واستدعاء طرق أخرى.

تحويل مصفوفة السلاسل في جافا إلى سلسلة نصية

في معظم الأحيان نقوم باستدعاء طريقة toString() لكائن للحصول على التمثيل النصي. دعونا نرى ماذا يحدث عندما نستدعي طريقة toString() على مصفوفة السلاسل في جافا.

package com.journaldev.util;

public class JavaStringArrayToString {

	public static void main(String[] args) {
		String[] strArr = new String[] {"1","2","3"};
		
		String str = strArr.toString();
		
		System.out.println("Java String array to String = "+str);
	}

}

الصورة أدناه تظهر الإخراج الذي يتم إنتاجه بواسطة البرنامج أعلاه. السبب في الإخراج أعلاه هو أن استدعاء toString() على المصفوفة سينتقل إلى فئة Object الأم حيث يتم تنفيذه كما يلي.

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

مثال على تحويل مصفوفة السلاسل في جافا إلى سلسلة نصية

كيف يمكن تحويل مصفوفة السلاسل إلى سلسلة في جافا؟ يمكننا استخدام الطريقة Arrays.toString التي تستدعي طريقة toString() على العناصر الفردية واستخدام StringBuilder لإنشاء السلسلة.

public static String toString(Object[] a) {
    if (a == null)
        return "null";

    int iMax = a.length - 1;
    if (iMax == -1)
        return "[]";

    StringBuilder b = new StringBuilder();
    b.append('[');
    for (int i = 0; ; i++) {
        b.append(String.valueOf(a[i]));
        if (i == iMax)
            return b.append(']').toString();
        b.append(", ");
    }
}

يمكننا أيضًا إنشاء طريقتنا الخاصة لتحويل مصفوفة السلاسل إلى سلسلة إذا كانت لدينا بعض متطلبات التنسيق الخاصة. فيما يلي برنامج بسيط يوضح هذه الطرق والإخراج المنتج.

package com.journaldev.util;

import java.util.Arrays;

public class JavaStringArrayToString {

	public static void main(String[] args) {
		String[] strArr = new String[] { "1", "2", "3" };

		String str = Arrays.toString(strArr);
		System.out.println("Java String array to String = " + str);

		str = convertStringArrayToString(strArr, ",");
		System.out.println("Convert Java String array to String = " + str);

	}

	private static String convertStringArrayToString(String[] strArr, String delimiter) {
		StringBuilder sb = new StringBuilder();
		for (String str : strArr)
			sb.append(str).append(delimiter);
		return sb.substring(0, sb.length() - 1);
	}
}

لذا إذا استخدمنا طريقة toString() على المصفوفة، فإنها تعيد بيانات غير مفيدة. توفر فئة Java Arrays toString(Object[] objArr) التي تكرر على عناصر المصفوفة وتستخدم تنفيذها لـ toString() لإرجاع تمثيل السلسلة للمصفوفة. لهذا السبب عند استخدام هذه الوظيفة، يمكننا رؤية محتويات المصفوفة ويمكن استخدامها لأغراض تسجيل البيانات. إذا كنت ترغب في دمج جميع عناصر السلسلة في مصفوفة السلاسل مع بعض الفاصل المحدد، فيمكنك استخدام الطريقة convertStringArrayToString(String[] strArr, String delimiter) التي تعيد السلسلة بعد دمجها.

مثال على تحويل مصفوفة جافا إلى سلسلة

الآن لنوسع مصفوفة السلاسل الخاصة بنا إلى مثال على السلسلة لاستخدامها مع أي كائنات مخصصة أخرى. فيما يلي التنفيذ.

package com.journaldev.util;

import java.util.Arrays;

public class JavaArrayToString {

	public static void main(String[] args) {
		A[] arr = { new A("1"), new A("2"), new A("3") };

		 // طريقة toString() الافتراضية 
		System.out.println(arr.toString());

		 // باستخدام Arrays.toString() لطباعة محتويات مصفوفة الكائنات 
		System.out.println(Arrays.toString(arr));

		 // تحويل مصفوفة الكائنات إلى سلسلة 
		System.out.println(convertObjectArrayToString(arr, ","));
	}

	private static String convertObjectArrayToString(Object[] arr, String delimiter) {
		StringBuilder sb = new StringBuilder();
		for (Object obj : arr)
			sb.append(obj.toString()).append(delimiter);
		return sb.substring(0, sb.length() - 1);

	}

}

class A {
	private String name;

	public A(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		System.out.println("A toString() method called!!");
		return this.name;
	}
}

الناتج الذي تم إنتاجه بواسطة برنامج مثال سلسلة جافا لمصفوفة الكائنات هو:

[Lcom.journaldev.util.A;@7852e922
A toString() method called!!
A toString() method called!!
A toString() method called!!
[1, 2, 3]
A toString() method called!!
A toString() method called!!
A toString() method called!!
1,2,3

لقد نظرنا في كيفية تحويل مصفوفة السلسلة في جافا إلى سلسلة ومن ثم قمنا بتوسيعها للاستخدام مع الكائنات المخصصة. هذا كل شيء بالنسبة لتحويل مصفوفة جافا إلى سلسلة.

يمكنك مراجعة المزيد من أمثلة جافا الأساسية من مستودعنا على GitHub.

المرجع: وثائق واجهة برمجة التطبيقات لـ Java Arrays toString.

Source:
https://www.digitalocean.com/community/tutorials/java-string-array-to-string