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

时间:2016-04-05 15:28:27

标签: java list java-8

我有一个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建议!

2 个答案:

答案 0 :(得分:25)

在Java 8中,你应该使用类似的东西:

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

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

originalStrings.replaceAll(String::trim);

答案 1 :(得分:4)

如果您使用的是java-8,则可以使用:

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