2014-04-27 27 views
13

Làm thế nào tôi có thể đạt được in mảng sau bằng cách sử dụng biểu thức lambda của Java 8?Làm thế nào để sử dụng các biểu thức lambda của Java để in một mảng?

int[] values = new int[16]; 
// Populate values 

for (int value : values) { 
    System.out.println(Integer.toUnsignedString(value, 16)); 
} 
+1

Hoặc 'Arrays.stream (giá trị) .forEach (i -> System.out.println (Integer.toUnsignedString (i, 16))); ' –

Trả lời

32
Arrays.stream(values) 
     .mapToObj(i -> Integer.toUnsignedString(i, 16)) 
     .forEach(System.out::println); 
1

Hi bạn có thể chuyển đổi mảng để liệt kê và tận dụng lambda như dưới đây sử dụng phương pháp foreach mới.

int[] values = new int[16]; 
List<Integer> list = Arrays.asList(values); 
list.forEach(n -> System.out.println(n)); 
+0

' Arrays.asList (giá trị)' sẽ tạo ra một 'Liệt kê ', không phải là 'Danh sách '. –

+0

biến nó thành mảng Integer và thử nó .. như Integer [] values ​​= new Integer [16]; –

+0

Tôi biết ... Tôi đã chỉ ra rằng ví dụ của bạn sẽ không biên dịch, vì OP có một mảng các giá trị nguyên thủy. –

1
IntStream.of(values) 
      .mapToObj(i -> Integer.toUnsignedString(i, 16)) 
      .forEach(System.out::println); 

là một thay thế (rõ ràng hơn IMO) để Arrays.stream().

+0

OP không muốn in int. Anh ta muốn in kết quả của 'Integer.toUnsignedString (i, 16)'. –

+0

@JBNizet: cảm ơn, tôi đã không đọc câu hỏi đúng cách. Tôi đã chỉnh sửa câu trả lời của mình. –

6
String[] nums = {"three","two","one"}; 
Arrays.stream(nums).forEach(num -> System.out.println(num)); 
Các vấn đề liên quan