如何打印用大括号分隔的数组列表?

How to print array lists comma separated with curly brackets?

如何在 Java 中打印用大括号分隔的字符串列表?例如,一个有“母亲”、“父亲”和“女儿”三个成员的家庭应打印为

There is a family consists of { Mother, Father, Daughter }

或空家人如

There is a family consists of { }

我写了这个,但是它不能打印字符串列表:

String[] family = {" "};
String separator = "";
System.out.print("{ ");
for (String word : family) {
    System.out.print(separator);
    System.out.print(word);
    separator = " ";
}
System.out.print(" }");

谢谢!

试试下面的 StringJoiner,它将解决您的要求

        //Define the Array List
        List<String> family = Arrays.asList("Mother","Father","Daughter");

        //StringJoiner class joins elements with given saperator and 
        //Start and end characters of the List
        //Below Joiner joins list items with',' character and
        //add '{' at start of the list and '}' at end of the list 
        StringJoiner strJoin = new StringJoiner(",","{","}");

        //Below is the simplified Lambda expression in Java8
        //Traversing family list by forEach
        //(s) denotes every element in that list and
        //we are just adding that s into strjoin 
        family.forEach((s)->strJoin.add(s));

        //printing the string joiner object  
        System.out.println(strJoin);

输出: {母亲,父亲,女儿}

希望以上解释能帮助您理解代码

(正如承诺的那样)这里有一些提示可以帮助您完成您的尝试...

这是您的代码当前的样子:

  String[] family = {" "};
    String separator = "";
    System.out.print("{ ");
    for (String word : family) {
        System.out.print(separator);
        System.out.print(word);
        separator = " ";
    }
    System.out.print(" }");
}

我假设那是 inside 一个 main 方法,正确的签名是 inside a class.

  1. family声明不正确:

     String[] family = {" "};
    

    这不是您表示空数组的方式。 (它实际上是一个包含一个字符串的数组,它由一个space组成。这可能会解释你的一些困难!!)

    Java 中的空字符串数组可以声明为:

    String[] family = {};
    String[] family = new String[0];
    String[] family = new String[]{};
    
  2. 分隔符不应该是""。它应该是一个逗号。 (不完全是......但试试吧。)

  3. 您不需要更改循环中的分隔符。分隔符应始终为逗号。

如果你按照上面的步骤进行操作,那么你会得到这样的输出:

{  }
{ ,Mother }
{ ,Mother,Father }
{ ,Mother,Father,Daughter }

还有两个问题需要解决。

  1. 只用逗号作为分隔符是不正确的。 (您应该能够弄清楚该怎么做。)

  2. 当列表为 non-empty 时,我们有一个不需要的前导逗号。这个比较棘手。问题是这个序列:

        System.out.print(separator);
        System.out.print(word);
    

    假设我们现在打印的那个之前有一个“字”。但当我们位于列表的开头时,情况并非如此。

处理多余逗号的一种方法是不在列表的开头输出分隔符。但是怎么办?

HINT 在列表的开头使用标志变量 true 并在打印第一个元素后将其更改为 false 。 (并使用标志来决定是否需要输出分隔符。)