Контрольный список имеет только один ненулевой элемент и извлекает его с помощью Java 8 - PullRequest
0 голосов
/ 20 марта 2019

Как проверить, есть ли в списке только один ненулевой элемент и, если это так, получить его, используя java 8 или Streams?

Один из моих методов возвращает список объектов, который должен проверить, содержит ли возвращаемый список только один ненулевой объект. Если это так, он создает карту, как определено ниже, необходимо зарегистрировать ошибку, как показано ниже.

`public void myMethod() {
    List<MyClass> tst = getAll();
    if(!tst.isEmpty() ) {
      if( tst.size() == 1) {
       if(tst.get(0)!= null) {
          MyClass class1 = tst.get(0);
          Map<Integer,MyClass> m = 
             Stream.of(class1).collect(Collectors.toMap(MyClass:: getId, 
                 Function.identity()));
          }
        }
      else {
        LOGGER.error("Multiple object found - {} object", tst.size());
      }
    }`

Я ищу способ написать в чистом и стандартном формате, так как у меня три условия If

1 Ответ

0 голосов
/ 20 марта 2019

Нечто подобное должно сработать, но оно не использует потоки.Если вам действительно нужно использовать потоки, скажите об этом, и я попробую:)

int notNullCount = 0;
Object myNotNullElement;
for (Object element : myArray){
    if (notNullCount > 1){
        //Throw exception or do whaterver you need to do to signal this
        break;
    }

    if (element != null){
        myNotNullElement = element;
        notNullCount++;
    }
}
...