2015-07-28 2 views
-1

Учитывая List<String> размера 10:Проверка каждого элемента списка

List<String> messages = Arrays.asList(new String[10]); 

Как я могу гарантировать, что каждая строка в списке меньше, чем 1000 символов? Я знаю, что могу перебирать список, но мне было интересно, есть ли более разумный подход.

ответ

2

Если вы ищете один-вкладыш решение, которое вы можете использовать потоки, добавленные в 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 
0

Вы можете использовать обертку вокруг String и проверить длину в своем конструкторе длины String.

0

@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 
Смежные вопросы