ජාවා අරාව මුද්‍රණය කිරීමේ සරලම ක්‍රමය කුමක්ද?


1953

ජාවා හි, අරා අභිබවා නොයනු ඇත toString(), එබැවින් ඔබ කෙලින්ම මුද්‍රණය කිරීමට උත්සාහ කරන්නේ නම්, ඔබට අර්ථ දක්වා ඇති පරිදි අරාවෙහි classNameහෙක්ස් + '@' + 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]

8
නූල් හැර වෙනත් වස්තූන් සඳහා නිරූපණය වීමට ඔබට අවශ්‍ය කුමක්ද? ස්ට්‍රිං වෙත ඇමතීමේ ප්‍රති result ලය? උපුටා දැක්වීම් වලද නැද්ද?
ජෝන් ස්කීට්

3
ඔව් වස්තූන් ඒවායේ toString () ක්‍රමයෙන් සහ උපුටා දැක්වීම් නොමැතිව නිරූපණය කෙරේ (උදාහරණ ප්‍රතිදානය සංස්කරණය කරන්න).
ඇලෙක්ස් ස්පර්ලින්


1
එම අමුතු ප්‍රතිදානය අනිවාර්යයෙන්ම මතක ස්ථානය නොවේ. එය hashCode()ෂඩාස්රාකාර වේ. බලන්න Object#toString().
4castle

1
Java8 හි තනි මානයන් හෝ බහු-මාන අරා මුද්‍රණය කිරීම සඳහා stackoverflow.com/questions/409784/…
akhil_mittal

Answers:


2620

ජාවා 5 සිට ඔබට අරා තුළ Arrays.toString(arr)හෝ Arrays.deepToString(arr)අරා සඳහා භාවිතා කළ හැකිය . Object[]අනුවාදය .toString()අරාවෙහි ඇති සෑම වස්තුවකටම කතා කරන බව සලකන්න . ප්‍රතිදානය ඔබ ඉල්ලන ආකාරයටම සරසා ඇත.

උදාහරණ:

  • සරල අරාව:

    String[] array = new String[] {"John", "Mary", "Bob"};
    System.out.println(Arrays.toString(array));

    ප්‍රතිදානය:

    [John, Mary, Bob]
  • නෙස්ටඩ් අරා:

    String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}};
    System.out.println(Arrays.toString(deepArray));
    //output: [[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922]
    System.out.println(Arrays.deepToString(deepArray));

    ප්‍රතිදානය:

    [[John, Mary], [Alice, Bob]]
  • double අරාව:

    double[] doubleArray = { 7.0, 9.0, 5.0, 1.0, 3.0 };
    System.out.println(Arrays.toString(doubleArray));

    ප්‍රතිදානය:

    [7.0, 9.0, 5.0, 1.0, 3.0 ]
  • int අරාව:

    int[] intArray = { 7, 9, 5, 1, 3 };
    System.out.println(Arrays.toString(intArray));

    ප්‍රතිදානය:

    [7, 9, 5, 1, 3 ]

3
අපට නූල් රාශියක් තිබේ නම් සහ සරල ප්‍රතිදානයක් අවශ්‍ය නම් කුමක් කළ යුතුද; වැනි: String[] array = {"John", "Mahta", "Sara"}, අපි වරහන සහ කොමා තොරව මෙම ප්රතිදානය අවශ්ය: John Mahta Sara?
හෙන්ගමේ

3
En හෙන්ගමේ: මෙය කිරීමට තවත් ක්‍රම කිහිපයක් තිබේ, නමුත් මගේ ප්‍රියතම දේ මෙයයි: javahotchocolate.com/notes/java.html#arrays-tostring .
රස් බැට්මන්

5
FYI, Arrays.deepToString()පිළිගන්නේ Object [](හෝ පන්ති පෙළක් Objectවැනි Integer, එනම් එය ප්‍රාථමික වර්ගයක ක්‍රියා නොකරනු ඇත int []. නමුත් Arrays.toString(<int array>)ප්‍රාථමික අරා සඳහා එය හොඳින් ක්‍රියාත්මක වේ.
මාකස්

4
En හෙන්ගමේ ඒ සඳහා කැප වූ ක්‍රමයක් තිබේ. System.out.println(String.join(" ", new String[]{"John", "Mahta", "Sara"}))මුද්‍රණය John Mahta Saraකරයි.
user8397947

2
ordorukayhan ඇත්ත වශයෙන්ම ඔබට මෙහි අරාව පැහැදිලිවම ස්ථාපනය කිරීම අතහැර දැමිය හැකිය: මක්නිසාද යත්,String.join(" ", "John", "Mahta", "Sara") මෙම .join(...)ක්‍රමය අරාව වරරාග් පරාමිතියක් ලෙස ගනී .
අමාඩන්

355

සෑම විටම පළමුව සම්මත පුස්තකාල පරීක්ෂා කරන්න.

import java.util.Arrays;

ඉන්පසු උත්සාහ කරන්න:

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

හෝ ඔබේ අරාවෙහි වෙනත් අරා මූලද්‍රව්‍ය ලෙස අඩංගු වේ නම්:

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

අපට නූල් රාශියක් තිබේ නම් සහ සරල ප්‍රතිදානයක් අවශ්‍ය නම් කුමක් කළ යුතුද; වැනි: String[] array = {"John", "Mahta", "Sara"}, අපි වරහන සහ කොමා තොරව මෙම ප්රතිදානය අවශ්ය: John Mahta Sara?
හෙන්ගමේ

1
En හෙන්ගමේහ් Arrays.toString (array) නූල් විචල්‍යයකට ගබඩා කර ජාවා වෙනුවට නව වරහන් ඉවත් කරන්න
නවීඩ් අහමඩ්

12
ජාවා 8 සමග අද කාලයේ @Hengameh: String.join(" ", Arrays.asList(array)). doc
ජස්ටින්

106

කෙසේ වෙතත්, මෙය දැන ගැනීම සතුටක්, කෙසේ වෙතත් “සෑම විටම පළමුව සම්මත පුස්තකාල පරීක්ෂා කරන්න” මම කිසි විටෙකත් උපක්‍රමයට පැටලෙන්නේ නැත Arrays.toString( myarray )

- මෙය සිදු කරන්නේ කෙසේදැයි බැලීමට මම මයිරේ වර්ගය කෙරෙහි අවධානය යොමු කළෙමි. මට කාරණය හරහා නැවත කියවීමට අවශ්‍ය නොවීය: සූර්යග්‍රහණ නිදොස්කරණය සහ myarray.toString () හි මා දකින දෙයට සමානව එය පිටතට ගෙන ඒමට මට පහසු ඇමතුමක් අවශ්‍ය විය.

import java.util.Arrays;
.
.
.
System.out.println( Arrays.toString( myarray ) );

අපට නූල් රාශියක් තිබේ නම් සහ සරල ප්‍රතිදානයක් අවශ්‍ය නම් කුමක් කළ යුතුද; වැනි: String[] array = {"John", "Mahta", "Sara"}, අපි වරහන සහ කොමා තොරව මෙම ප්රතිදානය අවශ්ය: John Mahta Sara?
හෙන්ගමේ

3
En හෙන්ගමේ මම හිතන්නේ එය තවත් මාතෘකාවක්. ඔබට පසුව පොදු සංගීත මෙහෙයුම් සමඟ මෙම නූල හැසිරවිය හැකිය ... අරාස්.ටොස්ට්‍රිං (මයිරේ) මෙන් .ප්‍රස්ථාරය ("[", "("); සහ යනාදිය.
ඔඩ්ඩෙව්

91

JDK1.8 හි ඔබට සමස්ත මෙහෙයුම් සහ ලැම්බඩා ප්‍රකාශනයක් භාවිතා කළ හැකිය:

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
*/

50
හෝ අඩු කරදරකාරී,Arrays.stream(strArray).forEach(System.out::println);
ඇලෙක්සිස් සී.

9
මෙය අවුල් සහගත ය. එය System.out::printlnජාවා 8 ක්‍රමවේදය විය යුතුය . ඔබේ කේතය අනවශ්‍ය ලැම්බඩා නිපදවයි.
බොරිස් ද ස්පයිඩර්

2
අතහැර දමා Arrays.asListකරන්නArrays.stream(strArray).forEach(System.out::println)
ජස්ටින්

1
Lex ඇලෙක්සිස්. එය අරා හැර වෙනත් වස්තූන් සමඟ ද භාවිතා කළ හැකි බැවිනි.
යසින් හජාජ්

1
Ass යසින් හජාජ් දෙකම. නිදසුනක් ලෙස, ඔබට අරාව හරහා පරාස ප්‍රවාහයක් ලබා ගැනීමට අවශ්‍ය නම් එය භාවිතා කිරීම Stream.ofයනු මුග්ධ ක්‍රමයයි .skip(n).limit(m). වර්තමාන ක්‍රියාත්මක කිරීම මඟින් විශාල ප්‍රමාණයේ ප්‍රවාහයක් ලබා Arrays.stream(T[], int, int)නොදෙන අතර සමාන්තරව මෙහෙයුම් සිදු කිරීමට අවශ්‍ය නම් වඩා හොඳ බෙදීම් කාර්ය සාධනයකට මග පාදයි. ඔබ සතුව තිබේ නම් int[], ඔබට අහම්බෙන් භාවිතා Stream.ofකළ හැකි Stream<int[]>අතර එය තනි මූලද්‍රව්‍යයක් සමඟ ආපසු Arrays.streamඑනු ඇති අතර ඔබට IntStreamකෙලින්ම ලබා දෙනු ඇත .
ඇලෙක්සිස් සී.

42

ජාවා 8 සිට ඇරඹෙන කෙනෙකුට වරහන් නොමැතිව අරා මූලද්‍රව්‍ය මුද්‍රණය කිරීම join()සඳහා සංගීත පන්තිය විසින් ලබා දී ඇති ක්‍රමයේ වාසිය ලබා ගත හැකි අතර තේරීමේ පරිමිතියකින් වෙන් කරනු ලැබේ (පහත උදාහරණය සඳහා අවකාශයේ අක්‍ෂරය මෙයයි):

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

ප්‍රතිදානය "හේයි අමිගෝ!"


40

ඔබ ජාවා 1.4 භාවිතා කරන්නේ නම්, ඔබට ඒ වෙනුවට කළ හැකිය:

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

(මෙය 1.5+ කින් ද ක්‍රියා කරයි.)


38
අවාසනාවට මෙය ක්‍රියාත්මක වන්නේ ප්‍රාථමිකයන්ගේ අරා නොව වස්තූන්ගේ අරා සමඟ පමණි.
ඇලෙක්ස් ස්පර්ලින්

34

Arrays.toString

සෘජු පිළිතුරක් ලෙස, @Esko ඇතුළු කිහිප දෙනෙකු විසින් ලබා දී ඇති විසඳුම භාවිතා, Arrays.toStringහා Arrays.deepToStringක්රම, හොඳම හුදෙක් වේ.

ජාවා 8 - Stream.collect (බැඳීම ()), Stream.forEach

පහත මම යෝජනා කර ඇති වෙනත් ක්‍රම කිහිපයක් ලැයිස්තුගත කිරීමට උත්සාහ කරමි, ටිකක් වැඩිදියුණු කිරීමට උත්සාහ කරමි, වඩාත්ම කැපී පෙනෙන එකතු කිරීම වන්නේ Stream.collectක්‍රියාකරු භාවිතා කිරීම , a භාවිතා කිරීම , කරන්නේ කුමක්ද යන්න අනුකරණය කිරීමයි.joining CollectorString.join

int[] ints = new int[] {1, 2, 3, 4, 5};
System.out.println(IntStream.of(ints).mapToObj(Integer::toString).collect(Collectors.joining(", ")));
System.out.println(IntStream.of(ints).boxed().map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(ints));

String[] strs = new String[] {"John", "Mary", "Bob"};
System.out.println(Stream.of(strs).collect(Collectors.joining(", ")));
System.out.println(String.join(", ", strs));
System.out.println(Arrays.toString(strs));

DayOfWeek [] days = { FRIDAY, MONDAY, TUESDAY };
System.out.println(Stream.of(days).map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(days));

// These options are not the same as each item is printed on a new line:
IntStream.of(ints).forEach(System.out::println);
Stream.of(strs).forEach(System.out::println);
Stream.of(days).forEach(System.out::println);

33

ජාවා 8 ට පෙර

අපට Arrays.toString(array)එක් මාන මානක සහ Arrays.deepToString(array)බහු-මාන අරා මුද්‍රණය කිරීමට භාවිතා කළ හැකිය .

ජාවා 8

දැන් අපි එම විකල්පය වෙලා තිබෙනවා Streamසහ lambdaඅරාව මුද්රණය කිරීමට.

මුද්‍රණය එක් මාන මාන:

public static void main(String[] args) {
    int[] intArray = new int[] {1, 2, 3, 4, 5};
    String[] strArray = new String[] {"John", "Mary", "Bob"};

    //Prior to Java 8
    System.out.println(Arrays.toString(intArray));
    System.out.println(Arrays.toString(strArray));

    // In Java 8 we have lambda expressions
    Arrays.stream(intArray).forEach(System.out::println);
    Arrays.stream(strArray).forEach(System.out::println);
}

ප්‍රතිදානය:

[1, 2, 3, 4, 5]
[ජෝන්, මේරි, බොබ්]
1
2
3
4
5
ජෝන්
මේරි
බොබ්

මුද්රණ බහු-මාන Array අපි භාවිතා කළ හැකි බහු-මාන අරා මුද්රණය කිරීමට අවශ්ය යන්තම් නඩුව Arrays.deepToString(array)ලෙස:

public static void main(String[] args) {
    int[][] int2DArray = new int[][] { {11, 12}, { 21, 22}, {31, 32, 33} };
    String[][] str2DArray = new String[][]{ {"John", "Bravo"} , {"Mary", "Lee"}, {"Bob", "Johnson"} };

    //Prior to Java 8
    System.out.println(Arrays.deepToString(int2DArray));
    System.out.println(Arrays.deepToString(str2DArray));

    // In Java 8 we have lambda expressions
    Arrays.stream(int2DArray).flatMapToInt(x -> Arrays.stream(x)).forEach(System.out::println);
    Arrays.stream(str2DArray).flatMap(x -> Arrays.stream(x)).forEach(System.out::println);
} 

දැන් නිරීක්ෂණය කළ යුතු කරුණ නම් Arrays.stream(T[]), int[]අප වෙත ආපසු ලබා දෙන Stream<int[]>ක්‍රමවේදය, flatMapToInt()එක් එක් මූලද්‍රව්‍යයට ලබා දී ඇති සිතියම්කරණ ශ්‍රිතය යෙදීමෙන් නිපදවන ලද සිතියම්ගත කළ ධාරාවක අන්තර්ගතය සමඟ එක් එක් ප්‍රවාහයේ මූලද්‍රව්‍ය සිතියම් ගත කිරීමයි.

ප්‍රතිදානය:

[[11, 12], [21, 22], [31, 32, 33]]
[[ජෝන්, බ්‍රාවෝ], [මේරි, ලී], [බොබ්, ජොන්සන්]]
11
12
21
22
31
32
33
ජෝන්
බ්‍රාවෝ
මේරි
ලී
බොබ්
ජොන්සන්


අපට නූල් රාශියක් තිබේ නම් සහ සරල ප්‍රතිදානයක් අවශ්‍ය නම් කුමක් කළ යුතුද; වැනි: String[] array = {"John", "Mahta", "Sara"}, අපි වරහන සහ කොමා තොරව මෙම ප්රතිදානය අවශ්ය: John Mahta Sara?
හෙන්ගමේ

28

Arrays.deepToString(arr) එක් පේළියක පමණක් මුද්‍රණය කරයි.

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

ද්විමාන වගුවක් ලෙස මුද්‍රණය කිරීම සඳහා ඇත්ත වශයෙන්ම වගුවක් ලබා ගැනීමට, මට මෙය කිරීමට සිදු විය:

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

Arrays.deepToString(arr)ක්‍රමය බෙදුම්කරු නූලක් ගත යුතු බව පෙනේ , නමුත් අවාසනාවකට එය එසේ නොවේ.


3
සමහර විට System.getProperty ("line.separator") භාවිතා කරන්න; \ r \ n වෙනුවට වින්ඩෝස් නොවන අයටද එය නිවැරදිය.
ස්කූටරය

ඔබට දැන් System.lineSeparator () භාවිතා කළ හැකිය
Novaterata

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

6
මේ ආකාරයෙන් ඔබ හිස් අවකාශයකින් අවසන් වේ;)
මතියස්

1
line matthiad .. මෙම රේඛාව හිස් අවකාශයකින් අවසන් වීම වළක්වනු ඇත System.out.println (n + (someArray.length == n)? "": "");
මුහම්මද් සුලේමාන්

3
එය කිරීමේ නරකම ක්‍රමය.
NameNotFoundException

U මුහම්මද් සුලේමන් එය ක්‍රියා නොකරයි, මන්ද මෙය සෑම ලූපයක් සඳහාම වේ. nයනු අරාවෙහි සත්‍ය අගය මිස දර්ශකය නොවේ. නිත්‍ය ලූපයක් සඳහා, එය ද එසේ වනු ඇත (someArray.length - 1) == i, මන්ද එය iඅරාව දිගට සමාන වන විට කැඩී යයි .
රේඩියෝඩෙෆ්

17

ජාවා හි අරා මුද්‍රණය කිරීමට විවිධ ක්‍රම:

  1. සරල මාර්ගය

    List<String> list = new ArrayList<String>();
    list.add("One");
    list.add("Two");
    list.add("Three");
    list.add("Four");
    // Print the list in console
    System.out.println(list);

ප්‍රතිදානය: [එක, දෙක, තුන, හතර]

  1. භාවිතා කිරීම toString()

    String[] array = new String[] { "One", "Two", "Three", "Four" };
    System.out.println(Arrays.toString(array));

ප්‍රතිදානය: [එක, දෙක, තුන, හතර]

  1. අරා අරා මුද්‍රණය කිරීම

    String[] arr1 = new String[] { "Fifth", "Sixth" };
    String[] arr2 = new String[] { "Seventh", "Eight" };
    String[][] arrayOfArray = new String[][] { arr1, arr2 };
    System.out.println(arrayOfArray);
    System.out.println(Arrays.toString(arrayOfArray));
    System.out.println(Arrays.deepToString(arrayOfArray));

ප්‍රතිදානය: [[Ljava.lang.String; @ 1ad086a [[Ljava.lang.String; @ 10385c1, [Ljava.lang.String; @ 42719c] [[පස්වන, හයවන], [හත්වන, අටවන]]

සම්පත්: අරාවකට ප්‍රවේශ වන්න


13

මගේ මතය අනුව අරාව මුද්‍රණය කිරීමේ සරලම ක්‍රමය වන්නේ ලූප සඳහා නිතිපතා භාවිතා කිරීමයි. මෙන්න ඔබේ intArray මත පදනම්ව නියැදි කේතයක් ඇත

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

එය ඔබගේ 1, 2, 3, 4, 5 ලෙස ප්‍රතිදානය ලබා දෙයි


4
එය "1, 2, 3, 4, 5" ප්‍රතිදානය ලෙස මුද්‍රණය කරයි, එය අවසාන මූලද්‍රව්‍යයෙන් පසුව ද කොමාව මුද්‍රණය කරයි.
icza

අවසාන අංගයෙන් පසු කොමාව නොතිබීම සඳහා ඇති විසඳුම කුමක්ද?
මොනා ජලාල්

3
ඔබට ලූපය තුළ ඇති කේතය ප්‍රතිස්ථාපනය කළ හැකියSystem.out.print(intArray[i]); if(i != intArray.length - 1) System.out.print(", ");
නෙපොක්ස්

2
System.out.print(i + (i < intArray.length - 1 ? ", " : ""));එම පේළි දෙක ඒකාබද්ධ කිරීමටද ඔබට භාවිතා කළ හැකිය.
නික් සුවින්

ඔබට StringBuilder භාවිතා කර පසුපස කොමාව කපා දැමිය හැකිය. int [] intArray = නව int [] {1, 2, 3, 4, 5}; අවසාන StringBuilder sb = නව StringBuilder (); සඳහා (int i: intArray) {sb.append (intArray [i]) එකතු කරන්න (","); } if (sb.length ()> 0) {sb.setLength (sb.length () - 1); . System.out.println (sb.toString ()); මෙය "1, 2, 3, 4, 5" ප්‍රතිදානය කරයි.
රික් රයිකර්

8

මට මෑතකදී වැනිලා # ජාවා හි මෙම ලිපිය හමු විය . එය එතරම් පහසු ලිවීමක් නොවේ Arrays.toString(arr);, පසුව java.util.Arrays;සෑම විටම ආනයනය කරයි.

කරුණාකර සටහන් කරන්න, මෙය කිසිසේත් ස්ථිර විසඳුමක් නොවේ. නිදොස් කිරීම සරල කළ හැකි හැක් එකක් පමණි.

අරාවක් මුද්‍රණය කිරීමෙන් සෘජුවම අභ්‍යන්තර නිරූපණය සහ හැෂ් කේතය ලැබේ. දැන්, සියලුම පංතිවල Objectමව් වර්ගය ලෙස ඇත. ඉතින්, ඇයි හැක් නොකරන්නේ Object.toString()? වෙනස් කිරීමකින් තොරව, වස්තු පන්තිය මේ ආකාරයෙන් පෙනේ:

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

මෙය වෙනස් කරන්නේ නම් කුමක් කළ යුතුද:

public String toString() {
    if (this instanceof boolean[])
        return Arrays.toString((boolean[]) this);
    if (this instanceof byte[])
        return Arrays.toString((byte[]) this);
    if (this instanceof short[])
        return Arrays.toString((short[]) this);
    if (this instanceof char[])
        return Arrays.toString((char[]) this);
    if (this instanceof int[])
        return Arrays.toString((int[]) this);
    if (this instanceof long[])
        return Arrays.toString((long[]) this);
    if (this instanceof float[])
        return Arrays.toString((float[]) this);
    if (this instanceof double[])
        return Arrays.toString((double[]) this);
    if (this instanceof Object[])
        return Arrays.deepToString((Object[]) this);
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

විධාන රේඛාවට පහත සඳහන් දෑ එකතු කිරීමෙන් මෙම නවීකරණය කරන ලද පන්තිය පන්ති මාවතට එක් කළ හැකිය : -Xbootclasspath/p:target/classes.

දැන්, deepToString(..)ජාවා 5 සිට ලබා ගත හැකි බැවින්, වෙනත් අරා අඩංගු අරා සඳහා සහය එක් කිරීම සඳහා toString(..)පහසුවෙන් වෙනස් කළ හැකිය deepToString(..).

මෙය තරමක් ප්‍රයෝජනවත් හැක් එකක් බව මට පෙනී ගිය අතර ජාවාට මෙය සරලව එකතු කළ හැකි නම් එය ඉතා හොඳ වේ. නූල් නිරූපණය ගැටළු සහගත විය හැකි බැවින් ඉතා විශාල අරා තිබීම සමඟ ඇති විය හැකි ගැටළු මම තේරුම් ගතිමි. සමහර විට එවැනි සිදුවීම් සඳහා a System.outහෝ a වැනි දෙයක් සම්මත කරන්න PrintWriter.


2
ifසෑම වස්තුවකම මෙම කොන්දේසි ක්‍රියාත්මක කිරීමට ඔබට අවශ්‍යද ?
sidgate

+1 අදහස සඳහා පමණක්, නමුත් පෙර අදහස් දැක්වීම මත පදනම්ව, අපට Objectපොදු දෙමව්පියන් මත පදනම්ව නොව සෘජුවම අරාව ක්‍රියාත්මක කිරීම වෙනස් කළ හැකිද? අපට එම අදහස තවදුරටත් ක්‍රියාත්මක කළ හැකිද? Java.lang හි පෙරනිමි හැසිරීම වෙනස් කිරීම මා සිතන බවක් නොවේ. * වස්තූන් මා දිරිමත් කරන දෙයක් ...
YoYo

8

ඔබ භාවිතා කරන ඕනෑම JDK අනුවාදයක් එය සැමවිටම ක්‍රියාත්මක විය යුතුය:

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

Arrayවස්තු අඩංගු නම් එය ක්‍රියා කරයි . Arrayප්‍රාථමික වර්ග අඩංගු නම් , ඔබට ප්‍රාථමිකය කෙලින්ම ගබඩා කිරීම වෙනුවට එතීමේ පන්ති භාවිතා කළ හැකිය ..

උදාහරණයක්:

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
} 

1
හුදෙක් මුද්‍රණ කටයුතු සඳහා ලැයිස්තුවක් බවට පරිවර්තනය කිරීම ඉතා සම්පත්දායක තීරණයක් ලෙස නොපෙනේ; එකම පංතියට ඇති බව සලකන විට toString(..), යමෙකු මෙය කවදා හෝ කරන්නේ මන්දැයි එය මට පරාජය කරයි.
ඩෙබොස්මිත් රේ

8

ජාවා 8 හි එය පහසුය. මූල පද දෙකක් තිබේ

  1. ධාරාව: Arrays.stream(intArray).forEach
  2. ක්‍රම යොමුව: ::println

    int[] intArray = new int[] {1, 2, 3, 4, 5};
    Arrays.stream(intArray).forEach(System.out::println);

ඔබ එකම මාර්ගය අරාව සියලු අංග මුද්රණය කිරීමට අවශ්ය නම්, පසුව යන්තම් භාවිතා printවෙනුවට printlnඑනම්

int[] intArray = new int[] {1, 2, 3, 4, 5};
Arrays.stream(intArray).forEach(System.out::print);

ක්‍රම යොමුවකින් තොරව තවත් ක්‍රමයක් භාවිතා කරන්න:

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(intArray));

1
මෙය අරාවෙහි සෑම අංගයක්ම වෙනම රේඛාවකින් මුද්‍රණය කරනු ඇති අතර එමඟින් අවශ්‍යතා සපුරාලන්නේ නැත.
ඇලෙක්ස් ස්පර්ලින්

ඔබට අරාවෙහි ඇති සියලුම අංග එකම පේළියේ මුද්‍රණය කිරීමට අවශ්‍ය නම්, println වෙනුවට මුද්‍රණය භාවිතා කරන්න, එනම් int [] intArray = new int [] {1, 2, 3, 4, 5}; අරා.ස්ට්රීම් (intArray) .forEach (System.out :: print); ක්‍රමෝපාය රහිතව antotherway භාවිතා කරන්න int [] intArray = new int [] {1, 2, 3, 4, 5}; System.out.println (Arrays.toString (intArray));
suatCoskun

6

ඔබේ අරාව වර්‍ග වර්ගයේ නම් තවත් එක් ක්‍රමයක් තිබේ []:

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

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

මුද්රණ

abc

5

සියලු පිළිතුරු වලට එකතු කිරීම සඳහා, JSON නූලක් ලෙස වස්තුව මුද්‍රණය කිරීම ද විකල්පයකි.

ජැක්සන් භාවිතා කිරීම:

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
System.out.println(ow.writeValueAsString(anyArray));

Gson භාවිතා කිරීම:

Gson gson = new Gson();
System.out.println(gson.toJson(anyArray));

මේක තමයි මම කරන්නේ. මේ සමඟ, ඔබට JSON සමඟ කේතනය කළ හැකි තාක් කල් අත්තනෝමතික ලෙස සංකීර්ණ ව්‍යුහයන් මුද්‍රණය කළ හැකිය. මම සෑම විටම "ලස්සන" භාවිතා කිරීමට වග බලා ගන්නෙමි. ඔබේ දෙවන උදාහරණය එය කරයිද? මම හිතන්නේ ඔබට එය ලබා ගැනීම සඳහා "ලස්සන" විකල්පයක් තෝරා ගත යුතුය.
ස්ටීව්

5

ඔබ අරාව හරහා ලූප් කළ හැකිය, ඔබ ලූප් කරන විට එක් එක් අයිතමය මුද්‍රණය කරයි. උදාහරණයක් වශයෙන්:

String[] items = {"item 1", "item 2", "item 3"};

for(int i = 0; i < items.length; i++) {

    System.out.println(items[i]);

}

ප්‍රතිදානය:

item 1
item 2
item 3

5

අරාව මුද්‍රණය කිරීමට පහත ක්‍රම තිබේ

 // 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);
     }

4

මම උත්සාහ කළ සරල කෙටිමඟ මෙයයි:

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

එය මුද්‍රණය වේ

1
2
3

මෙම ප්‍රවේශයේදී ලූප අවශ්‍ය නොවන අතර එය කුඩා අරා සඳහා පමණක් සුදුසු වේ


4

අරාවෙහි මූලද්‍රව්‍ය මුද්‍රණය කිරීම සඳහා සෑම ලූපයක්ම භාවිතා කළ හැකිය:

int array[] = {1, 2, 3, 4, 5};
for (int i:array)
    System.out.println(i);

irefirephil System.out.println (a [i]); "i" දර්ශකය නිර්මාණය කර සෑම දර්ශකයකම අගය මුද්‍රණය කරනු ලබන සාමාන්‍ය ලූප සඳහා භාවිතා වේ. මම "එක් එක්" ලූප සඳහා භාවිතා කර ඇත. එය උත්සාහ කර බලන්න, ඔබට මගේ අදහස ලැබෙනු ඇතැයි සිතමි.
hasham.98

ඔව්, අරා මුද්‍රණය කිරීමට ඇති කෙටිම ක්‍රමය මෙයයි
මංජිත ටෙෂාරා

3
public class printer {

    public static void main(String[] args) {
        String a[] = new String[4];
        Scanner sc = new Scanner(System.in);
        System.out.println("enter the data");
        for (int i = 0; i < 4; i++) {
            a[i] = sc.nextLine();
        }
        System.out.println("the entered data is");
        for (String i : a) {
            System.out.println(i);
        }
      }
    }

3

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>

කේත පේළි දෙකකින් කළ හැකි සුළු දෙයක් නිසා යැපීමක් එකතු කිරීම කෑගැසීමේ ප්‍රති-රටාවකි.
ජූරෙස්

commons-lang3 ඉතා ජනප්‍රිය යැපීමක් වන අතර මෙම පිළිතුර බොහෝ දෙනා ජාවා භාවිතා නොකළ බව සලකන්න
හයිම් රාමන්

2

මෙය බයිට් එකක් මුද්‍රණය කිරීම සඳහා අනුපිටපතක් ලෙස සලකුණු කර ඇත [] . සටහන: බයිට් අරා සඳහා සුදුසු විය හැකි අතිරේක ක්‍රම තිබේ.

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);

හෝ ඔබට එය පදනම් 64 ලෙස මුද්‍රණය කිරීමට අවශ්‍ය නම්.

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.

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

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

output: [1, 2, 3, 4, 5]

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

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

output: [John, Mary, Bob]

1

ඔබ jdk 8 ධාවනය කරන්නේ නම්.

public static void print(int[] array) {
    StringJoiner joiner = new StringJoiner(",", "[", "]");
    Arrays.stream(array).forEach(element -> joiner.add(element + ""));
    System.out.println(joiner.toString());
}


int[] array = new int[]{7, 3, 5, 1, 3};
print(array);

ප්‍රතිදානය:

[7,3,5,1,3]

පිළිගත් පිළිතුරට වඩා මෙය හොඳය, එය පරිසීමකය, උපසර්ගය සහ උපසර්ගය මත වැඩි පාලනයක් ලබා දෙයි. කෙසේ වෙතත්, මම toString()අවසාන තරඟයේදී අතිරික්තය ඉවත් කර හිස් නූල එකතු කරනවා වෙනුවට System.out.println()එය භාවිතා කළෙමි joiner.add(element.toString()). මෙම විසඳුම ප්‍රාථමික නොවන වර්ගවල අරා සඳහා ද ඒකාකාරව ක්‍රියා කරයි.
ජෝන් මැක්ලේන්

මගේ නරක, element.toString()ඇතුළත joiner.add()ඇත්තේ ප්‍රාථමික නොවන වර්ග සඳහා පමණි. ඔබ තවමත් භාවිතා කළ යුතුයි Integer.toString(element)- ප්‍රාථමික වර්ග සඳහා ඉදිකිරීම් වැනි. පුද්ගලිකව, මම for (int element : array) joiner.add(Integer.toString(element));ධාරාවන් වෙනුවට foreach loop භාවිතා කළෙමි , නමුත් එය රසය පිළිබඳ කාරණයයි.
ජෝන් මැක්ලේන්



0

// ඔබ ජාවා හි කොන්සෝලය මත අරාව මූලද්‍රව්‍යයේ ලිපිනය මුද්‍රණය කරන්නේ නම්.

      int myArrayElement[] = {1,2,3,4,5,6,7,8,9,10};
       Log.i("MyTag",myIntegerNumbers + "");

මෙය ප්‍රශ්නයට පිළිතුරු සපයන බවක් නොපෙනේ.
පරිශීලකයා

-1

අරාව මූලද්‍රව්‍ය මුද්‍රණය කිරීමට ක්‍රම කිහිපයක් තිබේ. සියල්ලටම වඩා, මම එය පැහැදිලි කරන්නේ, අරාව යනු කුමක්ද? .. අරාව යනු දත්ත ගබඩා කිරීම සඳහා සරල දත්ත ව්‍යුහයකි..ඔබ අරාව නිර්වචනය කරන විට, සහායක මතක කොටස් වෙන් කරන්න. RAM හි. මෙම මතක කොටස් එක් ඒකකයක් ගනී ..

හරි, මම මේ වගේ පෙළක් සාදන්නම්,

class demo{
      public static void main(String a[]){

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

           System.out.print(number);
      }
}

දැන් ප්‍රතිදානය දෙස බලන්න,

රූප විස්තරය මෙහි ඇතුළත් කරන්න

නොදන්නා නූලක් මුද්‍රණය කර ඇති ආකාරය ඔබට දැක ගත හැකිය..මම කලින් සඳහන් කළ පරිදි, අරාව (සංඛ්‍යා අරාව) ප්‍රකාශයට පත් කළ මතක ලිපිනය මුද්‍රණය කර ඇත. ඔබට අරාවෙහි මූලද්‍රව්‍ය පෙන්වීමට අවශ්‍ය නම්, ඔබට "ලූප් සඳහා" භාවිතා කළ හැකිය ..

class demo{
      public static void main(String a[]){

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

           int i;

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

දැන් ප්‍රතිදානය දෙස බලන්න,

රූප විස්තරය මෙහි ඇතුළත් කරන්න

හරි, එක් මානයක අරාවෙහි මූලද්‍රව්‍යයන් සාර්ථකව මුද්‍රණය කර ඇත..දැන් මම මාන මාන දෙකක් සලකා බලමි..මම මානයන් දෙකක අරාව “අංක 2” ලෙස ප්‍රකාශයට පත් කර “Arrays.deepToString ()” යතුර භාවිතයෙන් මූලද්‍රව්‍ය මුද්‍රණය කරන්නෙමි.එය භාවිතා කිරීමට පෙර ඔබට 'java.util.Arrays' පුස්තකාලය ආනයනය කිරීමට සිදුවේ.

 import java.util.Arrays;

 class demo{
      public static void main(String a[]){

           int[][] number2={{1,2},{3,4},{5,6}};`

           System.out.print(Arrays.deepToString(number2));
      }
}

ප්‍රතිදානය සලකා බලන්න,

රූප විස්තරය මෙහි ඇතුළත් කරන්න

ඒ සමගම, ලූප දෙකක් භාවිතා කිරීමෙන් 2D මූලද්‍රව්‍ය මුද්‍රණය කළ හැකිය .. ඔබට ස්තූතියි!


int array [] = {1, 2, 3, 4, 5}; සඳහා (int i: array) System.out.println (i);
මංජිත ටෙෂාරා

මෙය උත්සාහ කර බලන්න මෙය අරා මුද්‍රණය කිරීමට ඇති කෙටිම ක්‍රමයයි
මංජිත ටෙෂාරා

"අරාව (සංඛ්‍යා අරාව) ප්‍රකාශයට පත් කරන ලද මතක ලිපිනය මුද්‍රණය කර ඇත" එය කිසිසේත්ම සත්‍ය නොවේ, එහි පද්ධති හැෂ් කේත වස්තුව, මෙය මතක ලිපිනය ඇතුළු බොහෝ දේ මත පදනම් විය හැකි නමුත් මෙය පසුව වෙනස් විය හැකි අතර හැෂ් කේතය එසේ නොවේ වෙනස් කරන්න. දැනට එය බොහෝ දුරට අහඹු අංකයකි. gotofinal.dev/java/2017/10/08/java-default-hashcode.html
GotoFinal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.