web-dev-qa-db-ja.com

List <String>内のすべての要素をtrim()する最良の方法は何ですか?

List<String>があり、潜在的に数千の文字列を保持しています。検証メソッドを実装しています。これには、各文字列に先頭または末尾の空白がないことを確認することが含まれます。

現在、リストを反復処理し、各Stringに対して String.trim() を呼び出し、新しいList<String>に追加して、元のリストに再割り当てしています:

List<String> trimmedStrings = new ArrayList<String)();
for(String s : originalStrings) {
  trimmedStrings.add(s.trim());
}

originalStrings = trimmedStrings;

DRYer これを行う方法があるように感じます。ここに、より効率的な代替アプローチがありますか?ありがとう!

編集:はい、私はJava 8なので、Java 8の提案を歓迎します!

11
heez

Java 8では、次のようなものを使用する必要があります。

List<String> trimmedStrings = 
    originalStrings.stream().map(String::trim).collect(Collectors.toList());

また、このメソッドを呼び出すことにより、初期リストの要素に単項String::trim演算子を使用することができます(トリミングされていないStringインスタンスが上書きされます)。

originalStrings.replaceAll(String::trim);
29
Cootri

Java-8を使用している場合は、次を使用できます。

    final List<Object> result = arrayList.stream()
        .map(String::trim)
        .collect(Collectors.toList());
4