将ArrayList输出为String而不显示[,](括号)

时间:2015-09-25 02:56:03

标签: java arrays string arraylist

好的,所以我有一个我需要作为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;开头的事实,但这种方法的缺陷是,如果我忘记在此处更改它,代码将会中断。不过,它解决了我的具体问题,我总是可以根据需要在两个地方给自己打个招呼。

10 个答案:

答案 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);