Tôi có mã sau lặp lại qua các kết hợp mẫu "E".."EEEE"
và "M".."MMMM"
của Java DateTimeFormatter
.Kết hợp các luồng của các đoạn nối
Câu hỏi của tôi là, có cách thức thành ngữ (hoặc chỉ 'thành ngữ hơn') để sử dụng Luồng Java trong trường hợp này không?
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class DateTimeFormattingStackOverflow {
static LocalDateTime dateTime = LocalDateTime.now();
static Stream<String> substrings(String str) {
return IntStream.range(1, str.length() + 1)
.mapToObj(i -> str.substring(0, i));
}
static void printDateTime(String pattern) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
System.out.println(pattern + ", " + dtf.format(dateTime));
}
public static void main(String[] args) {
Stream<String> patterns = substrings("EEEE")
.flatMap(e -> substrings("MMMM").map(m -> e + " " + m))
.map(em -> em + " d");
patterns.forEach(DateTimeFormattingStackOverflow::printDateTime);
}
}
Output
E M d, Sat 7 1
E MM d, Sat 07 1
E MMM d, Sat Jul 1
E MMMM d, Sat July 1
EE M d, Sat 7 1
EE MM d, Sat 07 1
EE MMM d, Sat Jul 1
EE MMMM d, Sat July 1
...
Bạn có cần nó với luồng hoặc nó có thể là một cách * thành ngữ khác không? –
Tôi đặc biệt quan tâm đến việc cố gắng thực hiện điều này trong 'cách phát trực tuyến', nhưng bạn chính xác rằng các phiên bản không phải dòng của mã này có thể là Java bình thường hơn, và tôi cảm ơn bạn đã đề xuất của bạn. –