2015-07-13 35 views
20

Có cách nào ưa thích để đúc một mảng Integer vào một mảng int không? (Tôi không muốn để lặp qua mỗi phần tử; Tôi đang tìm kiếm một cách thanh lịch và nhanh chóng để viết nó)Chuyển đổi số nguyên [] thành chuỗi int []

Một cách khác xung quanh tôi đang sử dụng

scaleTests.add(Arrays.stream(data).boxed().toArray(Double[]::new));

tôi m tìm kiếm một lớp lót nhưng không thể tìm thấy thứ gì đó.

Mục đích là để:

int[] valuesPrimitives = <somehow cast> Integer[] valuesWrapper 
+1

Câu hỏi thực tế là: tại sao bạn muốn thực hiện điều đó? Thiệt hại đã được xử lý (bạn đã tạo tất cả các đối tượng 'Double' và được trả tiền với thời gian thực thi cao hơn và sử dụng bộ nhớ cao hơn). – Turing85

+2

Không, bạn không thể truyền nó, vì 'Double []' không phải là 'double []'. Sẽ có một sự lặp lại đằng sau hậu trường. Một lớp lót có thể là: giá trị 'double []Primitives = Stream.of (valuesWrapper) .mapToDouble (d -> d) .toArray();' –

+1

http://stackoverflow.com/questions/564392/converting- a-array-of-objects-to-an-array-of-của chúng-nguyên thủy-loại –

Trả lời

38

Bạn có thể sử dụng Suối API của Java 8

int[] intArray = Arrays.stream(array).mapToInt(Integer::intValue).toArray(); 
+5

Đôi khi tôi thích nhìn thấy 'mapToInt (i -> i)'. –

5

Nếu bạn có thể xem xét sử dụng Apache commons ArrayUtils sau đó có một đơn giản toPrimitive API:

public static double [] toPrimitive (Double [] array, đôi valueForNull)

Chuyển đổi một mảng đối tượng Tăng gấp đôi để xử lý nguyên gốc null. Phương thức này trả về null cho một mảng đầu vào rỗng.

+0

Xin cảm ơn câu trả lời. Thật không may, tôi quên đề cập đến rằng tôi không thể sử dụng ArrayUtils. Nhưng cảm ơn anyways – Michael

1

Sử dụng ổi, bạn có thể làm như sau:

int[] intArray = Ints.toArray(intList); 

Nếu bạn đang sử dụng Maven, thêm sự phụ thuộc này:

<dependency> 
    <groudId>com.google.guava</groupId> 
    <artifactId>guava</artifactId> 
    <version>18.0</version> 
</dependency> 
Các vấn đề liên quan