关于java:将ArrayList输出为String,不出现[,](括号)

Output ArrayList to String without [,] (brackets) appearing

好,所以我有一个ArrayList,需要以String形式返回。现在我正在使用这种方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
List<Customer> customers = new ArrayList<>();
List<Account> accounts = new ArrayList<>();


public String customerList()
{
    String list = Arrays.toString(customers.toArray());
    return list;
}

public String accountList()
{
    String account = Arrays.toString(accounts.toArray());
    return account;
}

这可以正常工作,但是问题是我在文本周围出现了方括号。我得到的东西是:

1
2
3
4
5
6
 Customer list:
 --------------
 [Name: Last, First
 , Name: Last, First
 , Name: Last, First
 ]

当我想要这样的东西时:

1
2
3
4
5
 Customer list:
 --------------
 Name: Last, First
 Name: Last, First
 Name: Last, First

但是,与类似的问题不同,我不想只是逐行输出。我需要将ArrayList存储在没有括号的字符串中,以便可以使用它。

编辑:应该注意的是,我希望它看起来像的版本中的一个逗号是通过另一个类中的方法放置的:

1
2
3
4
public final String getName()  
    {
        return getLast() +"," + getFirst();
    }

编辑2:通过调整给出的两个答案,我能够找到完整的解决方案。很难确定哪个是"答案",因为我发现这两个都是有用的,但是我可以更选择性地使用它。

1
2
3
4
5
public String customerList()
{
    String list = Arrays.toString(customers.toArray()).replace(", N","N").replace(", N","N");
    return list.substring(1,list.length()-1);
}

要删除括号,我使用了修改后的返回。删除逗号需要我集中注意每一行都以" N"开头的事实,但是这种方法的缺点是,如果我在此处更改它而忘记更改它,则代码会中断。尽管如此,它仍然可以解决我的特定问题,并且我随时可以根据需要在两个地方自行注明。


您可以尝试用空格替换'['和']'

1
String list = Arrays.toString(customers.toArray()).replace("[","").replace("]","");


Java 8版本

1
2
3
4
5
List<Integer> intList = new ArrayList<Integer>();
intList.add(1);
intList.add(2);
intList.add(4);
System.out.println(intList.stream().map(i -> i.toString()).collect(Collectors.joining(",")));

输出:
1,2,4


可以直接将列表/设置转换为字符串并对其执行操作

1
customers.toString().replace("[","").replace("]","")

如果您希望输出看起来像:
item1,item2,item3

1
Arrays.toString(customers.toArray()).replace('[', ' ').replace(']', ' ').trim()

如果您希望输出看起来像:
item1 item2 item3

1
Arrays.toString(customers.toArray()).replace('[', ' ').replace(']', ' ').replace(',', ' ').trim()

可能的解决方案是:

1
2
String account = Arrays.toString(accounts.toArray());
return account.substring(1,account.length()-1);

还是您覆盖toString方法以根据需要返回字符串。


您可以使用方法substring()删除开始和结束方括号,而不会篡改ArrayList中的任何条目。
我使用了类似的方法将ArrayList<String>转换为String

1
String str = list.toString().substring(1, list.toString().length() - 1);


我认为打印列表的最佳解决方案是不带括号且不带分隔符(适用于Java 8及更高版本)

1
String.join("", YOUR_LIST);

您可以取消自己的定界符以分隔打印元素。

1
2
String.join(", \
"
, YOUR_LIST);

上面的

示例以逗号和换行符分隔每个列表元素。


您可以尝试。

1
2
String listAsStr = myList.toString(); // get list as string
listAsStr = listAsStr.substring(1,listAsStr.length()-1); // removing first and last bracket

这将返回不带括号的字符串。


您可以覆盖toString()方法并以您所喜欢的任何格式表示输出


任何人仍然坚持使用此方法,请尝试使用for-each循环。

1
2
3
4
5
6
7
ArrayList<String> list = new ArrayList<>(); // default size of 10

/*add elements to
the ArrayList*/


for(String element: list)
System.out.println(element);