Optional
Completed
Write static Optional<String> findUser(int id) over the users {1: ann, 2: bob, 3: cy}. For each id print the user in upper case or unknown, using map and orElse.
Input
n, then n ids.
Output
n lines.
Example
Input
4 2 9 1 3
Output
BOB unknown ANN CY
Editor
Java
Hints
Optional.ofNullable wraps a value that might be null.
map transforms the value only if present.
Solution explanation
Optional makes "no result" explicit in the return type instead of returning null.
Show solution
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Scanner;
public class Main {
static final Map<Integer, String> USERS = new HashMap<>();
static {
USERS.put(1, "ann");
USERS.put(2, "bob");
USERS.put(3, "cy");
}
static Optional<String> findUser(int id) {
return Optional.ofNullable(USERS.get(id));
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
System.out.println(findUser(sc.nextInt()).map(String::toUpperCase).orElse("unknown"));
}
}
}