val dbPort = props["mysqlPort"]?.get(0)?.toInt() ?: 3306
props is Map<String, List>
currently am writing it this way:
var portStr = props.get("mysqlPort").get(0); var dbPort = (portStr == null) ? 3306 : Integer.parseInt(portStr);
is this correct? can it be better?
Advertisement
Answer
Try this.
static int mySqlPort(Map<String, List<String>> prop) { return Optional.ofNullable(prop.get("mysqlPort")) .map(x -> x.get(0)) .map(Integer::parseInt) .orElse(3306); }
test case:
System.out.println("normal: " + mySqlPort(Map.of("mysqlPort", Arrays.asList("1234", "4567")))); System.out.println("null port: " + mySqlPort(Map.of("mysqlPort", Arrays.asList(null, "4567")))); System.out.println("no 'mysqlPort': " + mySqlPort(Map.of("sqlitePort", Arrays.asList("1234", "4567"))));
result:
normal: 1234 null port: 3306 no 'mysqlPort': 3306