我有一个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}。有人能解释一下发生了什么吗?谢谢
使用此代码,它适用于我: -
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]);
}
}
希望能帮到你!!!
现在你的方法没有返回任何东西,因为没有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();
}
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}。
结果是[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();
}
}