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

将排序后的ArrayList内容添加到同类型ArrayList时报错如何解决

报错原因

List.sort()是原地排序方法,会直接修改调用该方法的列表本身,返回值为void。你尝试把sort()的返回值传入add()/addAll()作为参数,就会出现参数类型不匹配的报错。

实现方案

方案1:允许修改原clientList的顺序

先完成原列表的排序,再将排序后的内容复制到目标列表即可:

// 对原clientList做原地排序
clientList.sort(Comparator.comparing(Client::getScore));
// 将排序后的所有元素复制到sortedClientList,得到独立的列表对象
sortedClientList.addAll(clientList);

执行完成后,修改sortedClientList的列表结构(新增、删除元素)不会影响原clientList。

方案2:保留原clientList的原有顺序

如果不需要修改原列表的排序,直接对目标副本排序即可:

// 先复制原列表的所有元素到sortedClientList
sortedClientList.addAll(clientList);
// 单独对副本排序,完全不影响原列表的顺序
sortedClientList.sort(Comparator.comparing(Client::getScore));

如果需要做到元素级完全独立(修改Client对象的属性不会同时影响两个列表),复制元素时需要对每个Client对象单独做深拷贝处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:18:04