2015-10-08 21 views
5

Có ngắn gọn hơn, có lẽ một trong lót đường, để viết những điều sau đây:Java 8 Way của Thêm vào Elements

ArrayList<Integer> myList = new ArrayList<>(); 
for (int i = 0; i < 100; i++){ 
    myList.add(i); 
} 

Sử dụng Java 8 tính năng, và cách tiếp cận chức năng insipred. Tôi không mong đợi một giải pháp Haskell như:

ls = [1..100] 

Nhưng điều gì đó thanh lịch hơn phong cách mệnh lệnh truyền thống.

Trả lời

6

Một giải pháp là

List<Integer> list = IntStream.range(0, 100).boxed().collect(Collectors.toCollection(ArrayList::new)); 

Các bước:

  1. IntStream.range(0, 100) là một dòng 100 nguyên thủy int s.
  2. boxed() biến điều này thành luồng Integer đối tượng. Điều này là cần thiết để đặt các số vào một Collection.
  3. collect(Collectors.toCollection(ArrayList::new)); là cách bạn chuyển đổi số Stream thành số ArrayList. Bạn có thể thay thế ArrayList::new bởi bất kỳ nhà cung cấp nào cho bộ sưu tập và các thành phần sẽ được thêm vào bộ sưu tập đó.
+0

Bạn có thể giải thích từng bước trong "đường ống" không? – Michael

+0

@Michael Bước nào bạn không hiểu? Bạn đã kiểm tra tài liệu của nó chưa? – Pshemo

+0

Thành thật mà nói, toàn bộ biểu hiện. Tôi chưa bao giờ nhìn thấy 'IntStream' trước đây, nhưng đặc biệt là phần bắt đầu với' boxed' trở đi @Pshemo – Michael

Các vấn đề liên quan