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

问题描述 投票:-1回答:4

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

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;
}

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

java arrays
4个回答
-1
投票

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

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]);
    }
}

希望能帮到你!!!


1
投票

现在你的方法没有返回任何东西,因为没有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();
}

0
投票
import java.util.*;
class Test{
    public static void methodA(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();
        System.out.println(Arrays.toString(arr));
    }

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

首先,它将Array元素添加到ArrayList,然后再将它转换为Array,它将Array6添加到了ArrayList。所以现在Array arr是{1,2,3,4,5,6}。


0
投票

结果是[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();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.