2016-04-15 14 views
6

Cách dễ dàng để chuyển đổi String[] thành Collection<Integer> là gì? Đây là cách tôi đang làm điều đó ngay bây giờ nhưng không chắc chắn nếu nó là tốt:Chuỗi chuỗi vào một tập hợp của Integer?

String[] myStringNumbers; 

Arrays.stream(Arrays.asList(myStringNumbers).stream().mapToInt(Integer::parseInt).toArray()).boxed().collect(
        Collectors.toList()); 

Trả lời

8

Bạn không cần phải tạo một mảng trung gian. Chỉ cần phân tích và thu thập (với nhập khẩu tĩnh của Collectors.toList):

Arrays.stream(myStringNumbers).map(Integer::parseInt).collect(toList()); 
3

Nó là cần thiết để sử dụng parseInt vì nó sẽ hộp kết quả đến việc thu, và như @Misha nói bạn có thể sử dụng Arrays.stream để tạo ra các dòng suối. Vì vậy, bạn có thể sử dụng như sau:

Arrays.stream(myStringNumbers).map(Integer::decode).collect(Collectors.toList()); 

Xin lưu ý rằng này không làm bất cứ lỗi xử lý (và các số điện thoại không nên bắt đầu với 0, # hoặc 0x trong trường hợp bạn không muốn bất ngờ). Nếu bạn chỉ muốn có 10 số cơ sở, Integer::valueOf là lựa chọn tốt hơn.

+2

Giá trị 'int' được đóng trong cả hai trường hợp, vì vậy cho dù bạn sử dụng' valueOf' hay 'parseInt' sẽ không có sự khác biệt. Và khá lạ khi đề nghị sử dụng một phương pháp khác như 'decode', theo sau là một cảnh báo về những bất ngờ gây ra bởi thực tế là phương pháp này có mục đích khác. – Holger

0

Dưới đây là những gì tôi nghĩ:

String[] myStringNumbers = {"1", "2"}; 
List<Integer> list = Stream.of(myStringNumbers).map(Integer::valueOf).collect(Collectors.toList()); 

Tôi hy vọng nó có thể được một số giúp đỡ. :)

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