You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArrayList反转相关问题:原地反转及反转存新列表报错解决

问题解答

Hey there! Let's break down your questions step by step, since you ran into a common pitfall with the Collections.reverse() method.

1. 为什么会出现"Required Arraylist get void"错误

首先明确错误根源:Collections.reverse()是**无返回值(void)**的方法——它不会生成并返回一个新的反转列表,而是直接修改你传入的原列表。

如果你写了类似这样的代码:

ArrayList<String> newList = Collections.reverse(temp);

就会触发这个错误:你试图把一个void类型的结果赋值给ArrayList变量,这在语法上是不允许的。

2. 正确将反转后的temp存入另一个ArrayList的方法

如果想要保留原temp列表的内容,同时把反转后的结果存到新列表里,你需要先复制原列表,再反转这个副本:

// 假设temp是你的原始ArrayList
ArrayList<String> temp = new ArrayList<>(Arrays.asList("apple", "banana", "cherry"));

// 步骤1:复制原列表到新列表
ArrayList<String> reversedTemp = new ArrayList<>(temp);

// 步骤2:反转新列表
Collections.reverse(reversedTemp);

// 现在reversedTemp是反转后的结果,原temp完全不受影响

如果不需要保留原temp的内容,你也可以先反转原列表,再复制到新列表,但上面的方法在需要保留原始数据时更稳妥。

3. 能否将反转结果存入一维数组?

当然可以!这里有两种常用方案:

方案1:先反转原列表,再转成数组

// 先修改原列表,将其反转
Collections.reverse(temp);

// 转成数组(根据你的列表元素类型调整数组类型)
String[] reversedArray = temp.toArray(new String[0]);

方案2:保留原列表,反转副本后转成数组

// 先创建原列表的反转副本
ArrayList<String> reversedTemp = new ArrayList<>(temp);
Collections.reverse(reversedTemp);

// 将反转副本转成数组
String[] reversedArray = reversedTemp.toArray(new String[0]);

4. 原地反转ArrayList(不存储到另一个列表)

如果你的需求是直接修改原列表实现反转,不需要额外存储到新列表,直接调用Collections.reverse()即可:

Collections.reverse(temp);
// 此时temp本身就已经是反转后的状态了

内容的提问来源于stack exchange,提问作者Encipher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:48:00