【发布时间】:2015-10-19 03:11:44
【问题描述】:
给定一个大小为 10 的 List<String>:
List<String> messages = Arrays.asList(new String[10]);
如何确保列表中的每个字符串都少于 1000 个字符?我知道我可以遍历列表,但我想知道是否有更聪明的方法。
【问题讨论】:
标签: java string list collections
给定一个大小为 10 的 List<String>:
List<String> messages = Arrays.asList(new String[10]);
如何确保列表中的每个字符串都少于 1000 个字符?我知道我可以遍历列表,但我想知道是否有更聪明的方法。
【问题讨论】:
标签: java string list collections
@Pshemo 答案太棒了! (+1)
这是另一种不使用流的方法:
public static void main(String[] args) throws Exception {
List<String> messages = Arrays.asList("abc","ab","a","abcdef","abcdefg");
System.out.println(validateList(messages, 7)); // True
System.out.println(validateList(messages, 6)); // False
}
public static boolean validateList(List<String> messages, int qualifier) {
for (String message : messages) {
if (message.length() > qualifier) {
return false;
}
}
return true;
}
结果:
true
false
【讨论】:
如果您正在寻找单线解决方案,您可以使用 Java 8 中添加的流及其allMatch(Predicate) 方法
List<String> messages = Arrays.asList("123","12","1","12345");
System.out.println(messages.stream().allMatch(s -> s.length()<5));//false
System.out.println(messages.stream().allMatch(s -> s.length()<6));//true
【讨论】:
您可以在String 周围使用包装器,并在其构造函数中验证String 的长度。
【讨论】: