修剪List(String>中的所有元素的最佳方法是什么?

hee*_*eez 11 java list java-8

我有一个List<String>,可能有成千上万的字符串.我正在实现一个验证方法,其中包括确保每个字符串中没有任何前导或尾随空格.

我正在迭代列表,为每个调用String.trim()String,并将其添加到新的List<String>并重新分配回原始列表:

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

originalStrings = trimmedStrings;
Run Code Online (Sandbox Code Playgroud)

我觉得有一种干燥方法可以做到这一点.这里有替代的,更有效的方法吗?谢谢!

编辑:是的我在Java 8上,所以欢迎Java 8建议!

Coo*_*tri 29

在Java 8中,您应该使用以下内容:

List<String> trimmedStrings = 
    originalStrings.stream().map(String::trim).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

也可以通过调用此方法将一元运算String::trim符用于初始列表的元素(未修剪的String实例将被覆盖):

originalStrings.replaceAll(String::trim);
Run Code Online (Sandbox Code Playgroud)

  • 他修改了输入列表的元素.所以没有必要声明新的`trimmedStrings`列表并浪费更多空间.但最初未修剪的`String`值将丢失 (2认同)