Java 依次打印ArrayList中的所有字符

Java 依次打印ArrayList中的所有字符,java,Java,我有这个ArrayList ArrayList<Character> wrongLetters; 现在它像这样打印 Number of errors: 9 ([X, M, S, K, B, Q, L, I, U]) 但是我怎样才能做到这样呢 Number of errors: 9 (XMSKBQLIU) 您可以使用错误的letters.forEach(System.out::print);在Java 8中,愚蠢的答案(只需删除非字母数字): Java 8+还有一个: Strin

我有这个ArrayList

ArrayList<Character> wrongLetters;
现在它像这样打印

Number of errors: 9 ([X, M, S, K, B, Q, L, I, U])
但是我怎样才能做到这样呢

Number of errors: 9 (XMSKBQLIU)

您可以使用错误的letters.forEach(System.out::print);在Java 8中,愚蠢的答案(只需删除非字母数字):

Java 8+还有一个:

StringJoiner joiner = new StringJoiner("");
    wrongLetters.stream().forEach(err -> joiner.add(String.valueOf(err)));
    System.out.println("Number of errors: " + wrongLetters.size() + " (" + joiner + ")");
没有Java 8(使用StringBuilder):


您可以使用Java8通过这种方式来实现

System.out.println(wrongLetters.stream().map(x -> x.toString()).collect(Collectors.joining()));
Java 8或更高版本:

final String result = wrongLetters.stream().map(String::valueOf).collect(Collectors.joining());
System.out.println("Number of errors: " + wrongLetters.size() + " (" +  result + ")");
valueOf(错误字母)对字符数组调用toString(),这就是它看起来像这样的原因。这里只为一个字符串调用Join[X,M,S,K,B,Q,L,I,U]
您必须将ArrayList更改为String。选中此项->

从字符的数组列表中创建字符串

String str = "";
for (Character c : wrongLetters) {
    str += c;
} 
然后:

System.out.println("Number of errors: " + wrongLetters.size() + " (" +  String.join("", str) + ")");
或创建字符串生成器:

StringBuilder stringBuilder= new StringBuilder(wrongLetters.size());

    for (Character c : wrongLetters) {
      stringBuilder.append(c);
    }
然后:


表达式
.map(x->x.toString())
可以替换为对象类的方法引用,如
map(Object::toString)
。嘿@dbl我还在学习Java8。谢谢你的评论,我也将从中学习。
String str = "";
for (Character c : wrongLetters) {
    str += c;
} 
System.out.println("Number of errors: " + wrongLetters.size() + " (" +  String.join("", str) + ")");
StringBuilder stringBuilder= new StringBuilder(wrongLetters.size());

    for (Character c : wrongLetters) {
      stringBuilder.append(c);
    }
       System.out.println("Number of errors: " + wrongLetters.size() + " (" +  String.join("", stringBuilder.toString()) + ")");