2015-05-06 29 views
5

Cân nhắc mảng hai dimentional nàyLàm thế nào để Loop và In 2D mảng sử dụng Java 8

String[][] names = { {"Sam", "Smith"}, 
        {"Robert", "Delgro"}, 
        {"James", "Gosling"}, 
        }; 

Sử dụng cách cổ điển, nếu chúng ta muốn truy cập mỗi phần tử của một mảng hai chiều, sau đó chúng ta cần phải lặp thông qua hai mảng chiều sử dụng hai cho vòng lặp.

for (String[] a : names) { 
    for (String s : a) { 
     System.out.println(s); 
    } 
} 

Có cách thức thanh lịch mới vòng lặp và In mảng 2D sử dụng tính năng Java 8 (Lambdas, tham chiếu phương thức, Luồng, ...) không?

Những gì tôi đã cố gắng cho đến nay là thế này:

Arrays.asList(names).stream().forEach(System.out::println); 

Output:

[Ljava.lang.String;@6ce253f1 
[Ljava.lang.String;@53d8d10a 
[Ljava.lang.String;@e9e54c2 
+0

Làm thế nào để 'String' của bạn ome 'int' ở giữa hoạt động của bạn? – Holger

+0

Rất tiếc xin lỗi. Tôi đã chỉnh sửa mã từ 'for (int [] a: name) { cho (int i: a) { System.out.println (i); } } 'đến' cho (Chuỗi [] a: tên) { cho (Chuỗi s: a) { System.out.println (s); } \t} 'Cảm ơn @Holger – MChaker

Trả lời

14

Giữ đầu ra tương tự như for vòng của bạn:

Stream.of(names) 
    .flatMap(Stream::of) 
     .forEach(System.out::println); 

(. Xem Stream#flatMap)

Cũng giống như:

Arrays.stream(names) 
    .map(a -> String.join(" ", a)) 
     .forEach(System.out::println); 

nào sản xuất ra như:

Sam Smith 
Robert Delgro 
James Gosling

(Xem String#join.)

Ngoài ra:

System.out.println(
    Arrays.stream(names) 
     .map(a -> String.join(" ", a)) 
      .collect(Collectors.joining(", ")) 
); 

nào sản xuất ra như:

Sam Smith, Robert Delgro, James Gosling

(. Xem Collectors#joining)

Tham gia là một trong những ít thảo luận nhưng vẫn tuyệt vời các tính năng mới của Java 8.

7

Trong tiêu chuẩn Java

System.out.println(Arrays.deepToString(names)); 
+3

Rất đẹp, nhưng có cách nào mới sử dụng tính năng java 8 không? – MChaker

6

Hãy thử điều này

Stream.of(names).map(Arrays::toString).forEach(System.out::println); 
Các vấn đề liên quan