web-dev-qa-db-ja.com

ArrayListを[、](括弧)なしで文字列に出力します

わかりましたので、文字列として返す必要がある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を角かっこなしの文字列に格納して、作業できるようにする必要があります。

EDIT:見せたいバージョンの1つのコンマは、別のクラスのメソッドによって配置されていることに注意してください。

public final String getName()  
    { 
        return getLast() + ", " + getFirst(); 
    }

編集2:与えられた2つの答えを適応させることにより、完全な解決策を見つけることができました。どちらが「答え」であるかを判断するのは困難でしたが、両方とも有用であると判断しましたが、より選択的に使用できるものを選びました。

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

ブラケットを取り外すには、修正されたリターンを使用しました。コンマを削除するには、各行が「N」で始まることに注意する必要がありましたが、このアプローチの欠点は、ここで変更すると忘れてしまうとコードが壊れてしまうことです。それでも、それは私の特定の問題を解決し、私は必要に応じて両方の場所で自分自身に常に記すことができます。

11
Elliander

「[」と「]」を空のスペースに置き換えてみてください

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

リスト/セットを文字列に直接変換し、アクションを実行できます

customers.toString().replace("[", "").replace("]", "")
3
Saurabh Mittal

可能な解決策は次のとおりです。

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

または、toStringメソッドをオーバーライドして、必要に応じて文字列を返しますか。

2
Rodrigo Gomes

メソッドsubstring()を使用して、ArrayListのエントリを改ざんせずに開始ブラケットと終了ブラケットを削除できます。このようなものを使用して、ArrayList<String>から文字列

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

出力を次のようにしたい場合:item1、item2、item3

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

出力を次のようにしたい場合:item1 item2 item3

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

ToString()メソッドをオーバーライドし、任意の形式で出力を表すことができます

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

0
yejianfengblue