Преобразование двухмерного массива в строку с выбором разделителей - PullRequest
0 голосов
/ 18 апреля 2019

Как мне преобразовать этот массив, чтобы вывод кода ниже был следующим:

String[][] array = { { "a", "b" }, { "c" } };

String lineSeparator = System.lineSeparator();
StringBuilder sb = new StringBuilder();

for (String[] row : array) {
    sb.append(Arrays.toString(row))
      .append(lineSeparator);
}

String result = sb.toString();

Мне нужно, чтобы вывод выглядел следующим образом

a,b,c 

Я получаю это прямо сейчас

[a, b]
[c]

Ответы [ 3 ]

1 голос
/ 18 апреля 2019
System.out.println(Arrays.stream(array).flatMap(ar -> Arrays.stream(ar)).collect(Collectors.joining(",")));

Это было сделано с использованием потоков Java 8, я не советую делать это в одну строку, как я сделал, всегда лучше сохранить его в переменную и затем распечатать его:)

0 голосов
/ 18 апреля 2019

Вы можете сделать это так:

String[][] array = {{"a", "b"}, {"c"}};

String s = "";
for (String[] ar : array) {
    for (String c : ar) {
        s += c + ",";
    }
}
if (s.length() > 1)
    s = s.substring(0, s.length() - 1);

System.out.println(s);

Я считаю, что вы новичок. Возможно, проведите некоторое исследование, прежде чем отправлять вопрос.

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

0 голосов
/ 18 апреля 2019

Используйте StringJoiner вместо. IdeoneLink: https://ideone.com/EfodvF

/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String[][] array = { { "a", "b" }, { "c" } };
        StringJoiner sj = new StringJoiner(", ");

        for (String[] row : array) {
            for(String str: row){
                sj.add(str);
            }
        }


        String result = sj.toString();
        System.out.println(result);
    }
}
...