Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以用int[]替换整数[]吗?_Java_Integer_Int - Fatal编程技术网

Java 可以用int[]替换整数[]吗?

Java 可以用int[]替换整数[]吗?,java,integer,int,Java,Integer,Int,我正试着重写我的代码一点。在我的代码中是否可以使用int[]数组而不是Integer[] 当我用int[]替换所有Integer[]时,我陷入了替换的一部分: .toArray(整数[]::新建); 与 .toArray(int[]::新建); 公共类主{ 私有静态最终整数模=(int)(Math.pow(10,9)+7); 专用静态整数调制(最终长结果){ 返回值(整数)(结果%模); } //私人静电 私有静态整数[]步数(最终整数较小,最终整数较大){ 最终整数lcm=最低公倍数(越小

我正试着重写我的代码一点。在我的代码中是否可以使用
int[]
数组而不是
Integer[]

当我用
int[]
替换所有
Integer[]
时,我陷入了替换的一部分:

.toArray(整数[]::新建);

.toArray(int[]::新建);
公共类主{
私有静态最终整数模=(int)(Math.pow(10,9)+7);
专用静态整数调制(最终长结果){
返回值(整数)(结果%模);
}
//私人静电
私有静态整数[]步数(最终整数较小,最终整数较大){
最终整数lcm=最低公倍数(越小,越大);
最终int最大值=lcm/更小;
最终int最小值=lcm/更大;
最终整数[]结果=新整数[max*2];
int pos=0;

对于(int i=1;i假设您从
整数[]
开始,您可以在流中取消对整数的装箱,这将从
流中得到
IntStream

如果您实际将
结果
数组更改为键入
int[]
,则不需要取消装箱,但您将无法再使用
非空
筛选出元素:数组中未写入的元素将为零而不是空。因此,您需要:

// if result is an int[]
return Arrays.stream(result)
             .filter(n -> n!=0)
             .sorted()
             .distinct()
             .toArray();

使用列表而不是数组可能会更好。列表可以根据需要增加大小,这样就不必跟踪已到达的位置,也不必排除未写入的元素。

假设从
整数[]开始
,您可以取消对流中整数的装箱,这将从
流中生成
IntStream

如果您实际将
结果
数组更改为键入
int[]
,则不需要取消装箱,但您将无法再使用
非空
筛选出元素:数组中未写入的元素将为零而不是空。因此,您需要:

// if result is an int[]
return Arrays.stream(result)
             .filter(n -> n!=0)
             .sorted()
             .distinct()
             .toArray();

使用列表而不是数组可能会更好。列表可以根据需要增大大小,这样您就不必跟踪已到达的位置,也不必排除未写入的元素。

如果将源数组也更改为
int[]
,则不必使用
.mapToInt(n->n)
(问题意味着他们有)@JonK他们的起始数组可能包含null(流过滤掉)这一事实表明它必须是
Integer[]
,而不是
int[]
。在这种情况下,我怀疑OP的编程过于防御性——我看不到任何一个元素根据已发布的代码实际为
null
,或者他/她可以从
int[]数组开始
@JonK您不正确。方法中的
结果
数组过大,并且确实会有空元素。
.mapToInt(n->n)
如果您将源数组也更改为
int[]
(问题表明它们有)@JonK其起始数组可能包含空元素的事实(流过滤掉的)表明它必须是
Integer[]
,而不是
int[]
。在这种情况下,我怀疑OP的编程过于防御性——我看不到任何一个元素根据已发布的代码实际为
null
,或者他/她可以从
int数组开始[]
@JonK您是不正确的。方法中的
结果
数组太大,确实会有空元素。@burm87数组是对象,即使它们的元素是基本元素。您可以使用
new
构造对象。
IntFunction i=int[]::new;
是完全有效的代码。@burm87数组是对象,即使它们的元素是基元。您可以使用
new
来构造对象。
IntFunction i=int[]::new;
是完全有效的代码。