Java 使用ArrayList对我的数组进行更改,然后将其转换回数组,数组不会更改
我有一个int[]数组,所以我将其转换为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[] 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;iimportjava.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也在您使用的arrayDidarr=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();
}
}