好的,所以我有一个我需要作为String返回的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存储在没有括号的String中,以便我可以使用它。
编辑:应该注意的是,我希望它看起来的版本中的一个逗号是通过不同类中的方法放置的:
public final String getName()
{
return getLast() + ", " + getFirst();
}
编辑2:通过调整我给出的两个答案,我找到了一个完整的解决方案。很难决定哪个是&#34;答案&#34;因为我发现它们都很有用,但是我选择了更有用的那个。
public String customerList()
{
String list = Arrays.toString(customers.toArray()).replace(", N", "N").replace(", N", "N");
return list.substring(1,list.length()-1);
}
要删除括号,我使用了修改后的返回。删除逗号需要我专注于每一行都以&#34; N&#34;开头的事实,但这种方法的缺陷是,如果我忘记在此处更改它,代码将会中断。不过,它解决了我的具体问题,我总是可以根据需要在两个地方给自己打个招呼。
答案 0 :(得分:20)
您可以尝试更换&#39; [&#39;和&#39;]&#39;空的空间
String list = Arrays.toString(customers.toArray()).replace("[", "").replace("]", "");
答案 1 :(得分:3)
可以直接将list / set转换为字符串并对其执行操作
customers.toString().replace("[", "").replace("]", "")
答案 2 :(得分:2)
可能的解决方案是:
String account = Arrays.toString(accounts.toArray());
return account.substring(1,account.length()-1);
或者您是否覆盖toString
方法以根据需要返回字符串。
答案 3 :(得分:1)
如果您希望输出看起来像: item1,item2,item3
Arrays.toString(customers.toArray()).replace('[', ' ').replace(']', ' ').trim()
如果您希望输出看起来像: item1 item2 item3
Arrays.toString(customers.toArray()).replace('[', ' ').replace(']', ' ').replace(',', ' ').trim()
答案 4 :(得分:1)
您可以使用方法substring()删除开始和结束括号,而不会篡改ArrayList中的任何条目。
我使用这样的东西将ArrayList<String>
转换为String
String str = list.toString().substring(1, list.toString().length() - 1);
答案 5 :(得分:0)
您可以覆盖toString()方法并以
的任何格式表示输出答案 6 :(得分:0)
Java 8版本
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
答案 7 :(得分:0)
您可以尝试一下。
String listAsStr = myList.toString(); // get list as string
listAsStr = listAsStr.substring(1,listAsStr.length()-1); // removing first and last bracket
这将返回不包含首尾括号的字符串。
答案 8 :(得分:0)
我认为打印列表的最佳解决方案是不带括号且不带分隔符(对于Java 8及更高版本)
String.join("", YOUR_LIST);
您可以取消自己的分隔符以分隔打印元素。
String.join(", \n", YOUR_LIST);
上面的示例用逗号和换行符分隔每个列表元素。
答案 9 :(得分:-1)
任何人都仍然坚持这样做,请尝试使用for-each循环。
ArrayList<String> list = new ArrayList<>(); // default size of 10
/*add elements to
the ArrayList*/
for(String element: list)
System.out.println(element);