diff --git a/optionals/.project b/optionals/.project new file mode 100644 index 0000000..1917593 --- /dev/null +++ b/optionals/.project @@ -0,0 +1,17 @@ + + + optionals + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/optionals/.settings/org.eclipse.core.resources.prefs b/optionals/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/optionals/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/optionals/.settings/org.eclipse.jdt.core.prefs b/optionals/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..9a7984b --- /dev/null +++ b/optionals/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=21 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=21 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=21 diff --git a/optionals/src/optionals/Main.java b/optionals/src/optionals/Main.java new file mode 100644 index 0000000..e882597 --- /dev/null +++ b/optionals/src/optionals/Main.java @@ -0,0 +1,42 @@ +package optionals; + +import java.util.List; +import java.util.Optional; +import java.util.function.Function; +import java.util.function.Predicate; + +class OptionalUtils { + // Return the list of `f()` applied to every element in `xs`, but do not + // include the empty results. + static List + convertPassing(List xs, Function> f) { + return null; + } + + // Return the list of `f()` applied to every element in `xs`, but do not + // include the resuslts that don't pass `pred()`. + static List + convertPassing(List xs, Function f, Predicate pred) { + return null; + } + + // Drop all empty values. + static List dropEmpty(List> xs) { + return xs.stream().filter(Optional::isEmpty); + } + + // Return a new function that applies `f()` to non-null values and returns + // empty optionals on null values. + static Function> nullFriendly(Function f) { + return null; + } + + // Apply and to the boolean values if both are present, otherwise return + // empty optional. + static Optional + optionalAnd(Optional b1, Optional b2) { + return null; + } +} + +class Examples {}