Java 使用ArrayList对我的数组进行更改,然后将其转换回数组,数组不会更改

Java 使用ArrayList对我的数组进行更改,然后将其转换回数组,数组不会更改,java,arrays,list,java-8,java-stream,Java,Arrays,List,Java 8,Java Stream,我有一个int[]数组,所以我将其转换为ArrayList,向其中添加一些元素,然后将其转换回数组,但是调用我的方法后的最终数组由于某种原因保持不变 int[] arr = {1,2,3,4,5} public static int[] method(int[] arr){ List<Integer> list = new ArrayList<Integer>(); for (int i=0; i<arr.length; i++) {

我有一个int[]数组,所以我将其转换为ArrayList,向其中添加一些元素,然后将其转换回数组,但是调用我的方法后的最终数组由于某种原因保持不变

int[] arr = {1,2,3,4,5}


public static int[] method(int[] arr){
    List<Integer> list = new ArrayList<Integer>();
    for (int i=0; i<arr.length; i++) {
        list.add(arr[i]);
    }
    list.add(6);        
    arr = list.stream().mapToInt(i -> i).toArray();
    return arr;
}
int[]arr={1,2,3,4,5}
公共静态int[]方法(int[]arr){
列表=新的ArrayList();
for(int i=0;i i).toArray();
返回arr;
}

发生的是我的方法返回{1,2,3,4,5}。但是,如果在方法内部调用sysout Arrays.toString(arr),则输出为{1,2,3,4,5,6}。有人能解释发生了什么吗?谢谢

现在您的方法没有返回任何内容,因为没有
return
语句。使用以下命令:

public static int[] method(int[] arr){
    List<Integer> list = new ArrayList<Integer>();
    for (int i=0; i<arr.length; i++) {
        list.add(arr[i]);
    }
    list.add(6);        
    return list.stream().mapToInt(i -> i).toArray();
}
公共静态int[]方法(int[]arr){
列表=新的ArrayList();
for(int i=0;i i).toArray();
}

使用此代码,它适用于我:-

static int[] arr = {1,2,3,4,5};
public static int[] method(int[] arr){
    List<Integer> list = new ArrayList<Integer>();
    for (int i=0; i<arr.length; i++) {
        list.add(arr[i]);
    }
    list.add(6);                
    int[] ret = new int[list.size()];
    for (int i=0; i <ret.length; i++)                   
        ret[i] = list.get(i).intValue();        
    return ret;
}
public static void main(String args[])
{
    arr = method(arr);      
    for(int i=0;i<arr.length;i++)
    {
        System.out.println(arr[i]);
    }
}
static int[]arr={1,2,3,4,5};
公共静态int[]方法(int[]arr){
列表=新的ArrayList();
对于(inti=0;i
importjava.util.*;
课堂测试{
公共静态无效方法A(int[]arr){
列表=新的ArrayList();
for(int i=0;i i).toArray();
System.out.println(Arrays.toString(arr));
}
公共静态void main(字符串参数[])
{
int[]arr={1,2,3,4,5};
方法a(arr);
}
}

首先,它将数组元素添加到ArrayList中,在再次将其转换为数组之前,它将6添加到ArrayList中。因此,现在数组arr是{1,2,3,4,5,6}。

结果是
[1,2,3,4,5,6]

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Stackoverflow1 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};

        //arr = method(arr);
        arr = method2(arr);

        System.out.println(Arrays.toString(arr));
    }

    public static int[] method(int[] arr){
        List<Integer> list = new ArrayList<>();
        for (int i=0; i<arr.length; i++) {
            list.add(arr[i]);
        }
        list.add(6);
        arr = list.stream().mapToInt(i -> i).toArray();
        return arr;
    }



    public static int[] method2(int[] arr){
        List<Integer> list =  Arrays.stream(arr).boxed().collect(Collectors.toList());
        list.add(6);
        return list.stream().mapToInt(i -> i).toArray();
    }
}
import java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入java.util.stream.collector;
公共类堆栈溢出1{
公共静态void main(字符串[]args){
int[]arr={1,2,3,4,5};
//arr=方法(arr);
arr=方法2(arr);
System.out.println(Arrays.toString(arr));
}
公共静态int[]方法(int[]arr){
列表=新的ArrayList();
for(int i=0;i i).toArray();
返回arr;
}
公共静态int[]方法2(int[]arr){
List List=Arrays.stream(arr.boxed().collect(Collectors.toList());
增加(6);
return list.stream().mapToInt(i->i.toArray();
}
}

抱歉,这只是我的示例代码。但是,问题仍然存在。@J.Doe然后准确显示如何获取
{1,2,3,4,5}
然后,否,6也在您使用的arrayDid
arr=method(arr)中
?哦,你又丢失了帐户凭据?@Tom对不起?你没有显示如何调用该方法…这就是问题所在。`list.get(i).intValue();`sehr-infficient!Besser:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Stackoverflow1 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};

        //arr = method(arr);
        arr = method2(arr);

        System.out.println(Arrays.toString(arr));
    }

    public static int[] method(int[] arr){
        List<Integer> list = new ArrayList<>();
        for (int i=0; i<arr.length; i++) {
            list.add(arr[i]);
        }
        list.add(6);
        arr = list.stream().mapToInt(i -> i).toArray();
        return arr;
    }



    public static int[] method2(int[] arr){
        List<Integer> list =  Arrays.stream(arr).boxed().collect(Collectors.toList());
        list.add(6);
        return list.stream().mapToInt(i -> i).toArray();
    }
}