将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 []的简单方法。
答案 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,那么您的解决方案也一样。