import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Stream;
import java.lang.*;
class TestingJavaStream {
public static void main
(String[] args
) {
Message message = new Message();
message.setName("Hello World!");
Stream
<Message
> messageStream
= streamNonnulls
(Collections.
singleton(message
)) .findFirst()
.orElseGet(Stream::empty);
System.
out.
println("Number of messages printed are " + messageStream
.map(TestingJavaStream::print)
.count());
}
public static class Message {
return this.name;
}
public void setName
(String name
) { this.name = name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals
(Object obj
) { if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Message other = (Message) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
return "Message [name=" + name + "]";
}
}
@SafeVarargs
public static <T> Stream<T> streamNonnulls(T... in) {
return stream(in).filter(Objects::nonNull);
}
@SafeVarargs
public static <T> Stream<T> stream(T... in) {
return Optional.ofNullable(in)
.filter(arr -> !(arr.length == 1 && arr[0] == null))
.map(Stream::of)
.orElseGet(Stream::empty);
}
public static <T> Predicate<T> not(Predicate<T> p) {
return (T x) -> !p.test(x);
}
public static Message print(Message someValue) {
System.
out.
println("Message is :: " + someValue.
toString()); return someValue;
}
}