【发布时间】:2016-04-05 15:28:27
【问题描述】:
我有一个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 建议!
【问题讨论】:
-
链接的问题讨论了每个字符串的大写,但这里的修剪是一样的:
originalStrings.replaceAll(String::trim); -
不幸的是,没有。字符串是不可变的,这意味着您必须使用新的字符串对象而不是列表中已有的对象。使用特定的 List 实现,您可以删除一个元素并将修剪后的对象插入到相同的位置,这将为您节省第二个
List。