In JDK SE 22 we have a solution for this.
var letters = List.of("a", "b", "c");
var lfmt = ListFormat.getInstance(Locale.US, Type.STANDARD, Style.FULL);
var result = lfmt.format(letters);
System.out.println(result); // "a, b, and c"
If you want OR instead of AND just use Type.OR.
More info here: https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/text/ListFormat.html