将Integer []转换为int []的最佳方法是什么

时间:2018-06-20 07:30:51

标签: java arrays

将Integer数组转换为int数组的最佳方法是什么。

简单的解决方案是:

0

在上面的示例中,我为null值取了CREATE FUNCTION [dbo].[fnSplitString] ( @string NVARCHAR(MAX), @delimiter CHAR(1) ) RETURNS @output TABLE(splitdata NVARCHAR(MAX) ) BEGIN DECLARE @start INT, @end INT SELECT @start = 1, @end = CHARINDEX(@delimiter, @string) WHILE @start < LEN(@string) + 1 BEGIN IF @end = 0 SET @end = LEN(@string) + 1 INSERT INTO @output (splitdata) VALUES(SUBSTRING(@string, @start, @end - @start)) SET @start = @end + 1 SET @end = CHARINDEX(@delimiter, @string, @start) END RETURN END ,因为对象/包装器的默认值为null,int的默认值为0。

This answer shows how to convert int[] to Integer[]

但是我找不到将Integer []转换为int []的简单方法。

2 个答案:

答案 0 :(得分:9)

您可以使用Java 8 Stream

如果输入数组没有null

Integer[] integerArr = ...
int[] arr = Arrays.stream(integerArr).mapToInt(Integer::intValue).toArray();

并处理null s:

Integer[] integerArr = ...
int[] arr = Arrays.stream(integerArr).mapToInt(i -> i != null ? i : 0).toArray();

答案 1 :(得分:0)

无法直接对其进行转换。您将需要遍历列表并取消对每个项目的装箱。 Eran的解决方案很短,并且利用了Java 8功能。如果您没有Java 8,那么您的解决方案也一样。