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"开头的事实,但是这种方法的缺点是,如果我在此处更改它而忘记更改它,则代码会中断。尽管如此,它仍然可以解决我的特定问题,并且我随时可以根据需要在两个地方自行注明。
- 看一下将数组中的元素合并为字符串
-
我不能为此使用String Builder。
-
String account = Arrays.toString(accounts.toArray()); return account.substring(1,account.length()-1);
-
@RodrigoGomes啊哈!那去掉了括号!我仍然看到多余的逗号,但这可能来自其他地方,因此我要仔细检查。您可以将其发布为答案吗?
-
为什么不能使用StringBuilder?如果在Arrays.toString中查看,您会发现它是通过将元素附加到StringBuilder来实现的。我建议您从此处复制代码,并删除负责添加逗号和方括号的行。
-
尝试:account..replaceAll(" ,","\
\
")删除那些多余的逗号,但是我建议您创建一种方法,以遍历数组并根据需要创建返回值。我给的解决方案我认为是解决方法;)
-
我上大学时遵循的是UML图。如果我使用未明确提及的任何编程功能,它们将扣分,但是老师不好回答问题,要么迫使我在其他地方补充我的理解。无论如何,这就是为什么我不能使用StringBuilder的原因。上一次我使用该功能时遇到了麻烦,因为它对我来说太高级了,或者有些废话。就在上周,我准备好之前使用ArrayList而不是模块化数组(因为这样更好),并且没有得到任何认可。
您可以尝试用空格替换'['和']'
1
| String list = Arrays. toString(customers. toArray()). replace("[", ""). replace("]", ""); |
- 这种方法也有效:)当然,不利的一面是如果在字符串中要使用方括号,但这也可能是防止使用类似字符的好方法。
-
你是对的。此解决方案仅真正适合您的特定解决方案。
-
对。我试图使它适应于除去多余的逗号,因为另一个答案除去了括号,但不幸的是,这样做也除去了我想要的逗号。
-
哦!我还是能够适应它!
-
java 8:字符串listCustomers = list.stream()。map(Object :: toString).collect(Collectors.joini ?? ng());
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 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 ); |
-
您阅读问题中描述的问题了吗?如果没有,请在尝试提供解决方案之前将其完整阅读。