【发布时间】:2015-12-22 19:21:49
【问题描述】:
好的,所以我有一个需要作为字符串返回的 ArrayList。现在我正在使用这种方法:
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;
}
这很好用,但问题是我在文本周围加了括号。我得到了类似的东西:
Customer list:
--------------
[Name: Last, First
, Name: Last, First
, Name: Last, First
]
当我想要这样的东西时:
Customer list:
--------------
Name: Last, First
Name: Last, First
Name: Last, First
但是,与类似的问题不同,我不想简单地逐行输出。我需要将 ArrayList 存储在不带括号的字符串中,以便使用它。
编辑: 应该注意的是,我希望它看起来像的版本中的一个逗号是由不同类中的方法放置在那里的:
public final String getName()
{
return getLast() + ", " + getFirst();
}
编辑 2:通过调整我给出的两个答案,我能够找到一个完整的解决方案。很难决定哪个是“答案”,因为我发现两者都很有用,但选择了我可以更有选择性地使用的那个。
public String customerList()
{
String list = Arrays.toString(customers.toArray()).replace(", N", "N").replace(", N", "N");
return list.substring(1,list.length()-1);
}
为了删除括号,我使用了修改后的返回。删除逗号需要我专注于每一行都以“N”开头的事实,但这种方法的缺陷是如果我忘记在此处更改它,如果我在那里更改它,代码会中断。尽管如此,它还是解决了我的具体问题,而且我总是可以根据需要在这两个地方给自己做笔记。
【问题讨论】:
-
我不能为此使用字符串生成器。
-
String account = Arrays.toString(accounts.toArray()); return account.substring(1,account.length()-1); -
@RodrigoGomes 啊哈!这删除了括号!我仍然看到额外的逗号,但这可能来自其他地方,所以我正在仔细检查。您可以将其发布为答案吗?
-
为什么不能使用
StringBuilder?如果您查看Arrays.toString内部,您会发现它是通过将元素附加到StringBuilder来实现的。我建议您从那里复制代码并删除负责附加逗号和括号的行。
标签: java arrays string arraylist