java - একটি জাভা অ্যারে প্রিন্ট করার সবচেয়ে সহজ উপায় কি?




15 Answers

সর্বদা মান লাইব্রেরি প্রথম চেক করুন। চেষ্টা করুন:

System.out.println(Arrays.toString(array));

অথবা যদি আপনার অ্যারে উপাদান হিসাবে অন্যান্য অ্যারে রয়েছে:

System.out.println(Arrays.deepToString(array));
java arrays printing

জাভাতে, অ্যারেগুলি toString() কে ওভাররাইড করে না, তাই যদি আপনি সরাসরি একটি মুদ্রণ করার চেষ্টা করেন, তবে আপনি Object.toString() দ্বারা নির্ধারিত অ্যারের hashCode ক্লাসের নাম + @ + Object.toString() :

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'

কিন্তু সাধারণত আমরা আরও কিছু চাই [1, 2, 3, 4, 5] । এটা করার সবচেয়ে সহজ উপায় কি? এখানে কিছু উদাহরণ ইনপুট এবং আউটপুট আছে:

// array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]



JDK1.8 এ আপনি সামগ্রিক ক্রিয়াকলাপ এবং একটি Lambda এক্সপ্রেশন ব্যবহার করতে পারেন:

String[] strArray = new String[] {"John", "Mary", "Bob"};

// #1
Arrays.asList(strArray).stream().forEach(s -> System.out.println(s));

// #2
Stream.of(strArray).forEach(System.out::println);

// #3
Arrays.stream(strArray).forEach(System.out::println);

/* output:
John
Mary
Bob
*/



জাভা 8 দিয়ে শুরু করা, স্ট্রিং ক্লাস দ্বারা প্রদত্ত join() পদ্ধতিটি উপরি উপাদানগুলি, বন্ধনীগুলি ছাড়া মুদ্রণ করতে এবং পছন্দসই সীমিতকারীর দ্বারা পৃথক করা যেতে পারে (যা নীচের উদাহরণের জন্য স্পেস ক্যারেক্টার join() দ্বারা উপভোগ করতে পারে। :

String[] greeting = {"Hey", "there", "amigo!"};
String delimiter = " ";
String.join(delimiter, greeting) 

আউটপুট হবে "আরে অ্যামigo!"।




Arrays.deepToString(arr) শুধুমাত্র এক লাইন প্রিন্ট।

int[][] table = new int[2][2];

প্রকৃতপক্ষে একটি দ্বিমাত্রিক টেবিল হিসাবে মুদ্রণ করতে একটি টেবিল পেতে, আমি এটা করতে ছিল:

System.out.println(Arrays.deepToString(table).replaceAll("],", "]," + System.getProperty("line.separator")));

মনে হচ্ছে Arrays.deepToString(arr) পদ্ধতিটি একটি বিভাজক স্ট্রিং নিতে হবে, কিন্তু দুর্ভাগ্যবশত এটি না।




for(int n: someArray) {
    System.out.println(n+" ");
}



লুপ জন্য নিয়মিত ব্যবহার আমার মতে মুদ্রণ অ্যারের সবচেয়ে সহজ উপায়। এখানে আপনার intArray এর উপর ভিত্তি করে একটি নমুনা কোড আছে

for (int i = 0; i < intArray.length; i++) {
   System.out.print(intArray[i] + ", ");
}

এটি আপনার 1, 2, 3, 4, 5 হিসাবে আউটপুট দেয়




আপনি যে কোনও JDK সংস্করণটি ব্যবহার করেন সেটি সর্বদা কাজ করা উচিত:

System.out.println(Arrays.asList(array));

Array অবজেক্ট থাকে যদি এটি কাজ করবে। যদি Array আদিম প্রকার ধারণ করে তবে আপনি আদিম সরাসরি সংরক্ষণের পরিবর্তে wrapper ক্লাস ব্যবহার করতে পারেন ..

উদাহরণ:

int[] a = new int[]{1,2,3,4,5};

এটি দিয়ে প্রতিস্থাপন করুন:

Integer[] a = new Integer[]{1,2,3,4,5};

হালনাগাদ :

হ্যাঁ! এটি একটি অ্যারে রূপান্তর একটি বস্তুর অ্যারে রূপান্তর বা অবজেক্ট এর অ্যারে ব্যবহার ব্যয়বহুল এবং উল্লেখ মৃত্যুদন্ড হতে পারে উল্লেখ করা হয়। এটি স্বতঃস্ফূর্তকরণ নামে জাভা প্রকৃতির দ্বারা ঘটে।

তাই শুধুমাত্র মুদ্রণ উদ্দেশ্যে, এটি ব্যবহার করা উচিত নয়। আমরা একটি ফাংশন তৈরি করতে পারি যা প্যারামিটার হিসাবে একটি অ্যারে নেয় এবং পছন্দসই ফর্ম্যাট প্রিন্ট করে

public void printArray(int [] a){
        //write printing code
} 



আপনার অ্যারে টাইপ গৃহস্থালি টাইপ যদি একটি অতিরিক্ত উপায় আছে []:

char A[] = {'a', 'b', 'c'}; 

System.out.println(A); // no other arguments

কপি করে প্রিন্ট

abc



আমি চেষ্টা করেছি একটি সরলীকৃত শর্টকাট এই হল:

    int x[] = {1,2,3};
    String printableText = Arrays.toString(x).replaceAll("[\\[\\]]", "").replaceAll(", ", "\n");
    System.out.println(printableText);

এটা মুদ্রণ করা হবে

1
2
3

এই পদ্ধতিতে কোন loops প্রয়োজন এবং এটি শুধুমাত্র ছোট অ্যারে জন্য ভাল




অ্যারে মুদ্রণ নিম্নলিখিত উপায় আছে

 // 1) toString()  
    int[] arrayInt = new int[] {10, 20, 30, 40, 50};  
    System.out.println(Arrays.toString(arrayInt));

// 2 for loop()
    for (int number : arrayInt) {
        System.out.println(number);
    }

// 3 for each()
    for(int x: arrayInt){
         System.out.println(x);
     }



Org.apache.commons.lang3.StringUtils.join (*) পদ্ধতি ব্যবহার করে একটি বিকল্প হতে পারে
উদাহরণ স্বরূপ:

String[] strArray = new String[] { "John", "Mary", "Bob" };
String arrayAsCSV = StringUtils.join(strArray, " , ");
System.out.printf("[%s]", arrayAsCSV);
//output: [John , Mary , Bob]

আমি নিম্নলিখিত নির্ভরতা ব্যবহার

<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>



এটি একটি বাইট মুদ্রণের জন্য একটি সদৃশ হিসাবে চিহ্নিত করা হয় [] । দ্রষ্টব্য: একটি বাইট অ্যারের জন্য অতিরিক্ত পদ্ধতি যা উপযুক্ত হতে পারে।

যদি এটি ISO-8859-1 অক্ষর থাকে তবে আপনি এটি স্ট্রিং হিসাবে মুদ্রণ করতে পারেন।

String s = new String(bytes, StandardChars.ISO_8559);
System.out.println(s);
// to reverse
byte[] bytes2 = s.getBytes(StandardChars.ISO_8559);

অথবা এটি একটি UTF-8 স্ট্রিং থাকে

String s = new String(bytes, StandardChars.UTF_8);
System.out.println(s);
// to reverse
byte[] bytes2 = s.getBytes(StandardChars.UTF_8);

অথবা আপনি যদি হেক্সাডেসিমেল হিসাবে এটি মুদ্রণ করতে চান।

String s = DatatypeConverter.printHexBinary(bytes);
System.out.println(s);
// to reverse
byte[] bytes2 = DatatypeConverter.parseHexBinary(s);

অথবা যদি আপনি base64 হিসাবে এটি মুদ্রণ করতে চান।

String s = DatatypeConverter.printBase64Binary(bytes);
System.out.println(s);
// to reverse
byte[] bytes2 = DatatypeConverter.parseBase64Binary(s);

অথবা আপনি স্বাক্ষরিত বাইটি মানগুলির একটি অ্যারে মুদ্রণ করতে চান

String s = Arrays.toString(bytes);
System.out.println(s);
// to reverse
String[] split = s.substring(1, s.length() - 1).split(", ");
byte[] bytes2 = new byte[split.length];
for (int i = 0; i < bytes2.length; i++)
    bytes2[i] = Byte.parseByte(split[i]);

অথবা আপনি স্বাক্ষরিত বাইট মান একটি অ্যারের মুদ্রণ করতে চান

String s = Arrays.toString(
               IntStream.range(0, bytes.length).map(i -> bytes[i] & 0xFF).toArray());
System.out.println(s);
// to reverse
String[] split = s.substring(1, s.length() - 1).split(", ");
byte[] bytes2 = new byte[split.length];
for (int i = 0; i < bytes2.length; i++)
    bytes2[i] = (byte) Integer.parseInt(split[i]); // might need a range check.



জাভা 8:

Arrays.stream(myArray).forEach(System.out::println);



যদি আপনি মুদ্রণ করতে চান তবে অ্যারে সামগ্রী মূল্যায়ন করুন যা আপনি Arrays.toString ব্যবহার করতে পারেন

jshell> String[] names = {"ram","shyam"};
names ==> String[2] { "ram", "shyam" }

jshell> Arrays.toString(names);
$2 ==> "[ram, shyam]"

jshell> 



একটি অ্যারে মুদ্রণ করার সবচেয়ে সরল উপায় হল for-loop ব্যবহার করা:

// initialize array
for(int i=0;i<array.length;i++)
{
    System.out.print(array[i] + " ");
}



Related