Java ArrayList去重后如何移除输出逗号、实现空格分隔打印
Java Exercise11_13 输出格式适配问题
题目要求
- 需按给定方法头编写去重逻辑:
public static void removeDuplicate(ArrayList<Integer> list),功能为移除Integer类型ArrayList中的重复元素 - 配套测试程序需实现:提示用户输入10个整数存入列表,输出按输入顺序排列的去重整数序列,要求元素间恰好使用一个空格分隔
当前实现进度
- 核心去重逻辑已完成:通过临时ArrayList遍历原列表,仅将未在临时列表中出现过的元素存入临时列表,最后清空原列表并将临时列表元素全部回填,去重功能本身运行正常
遇到的问题
- 直接打印ArrayList对象时,输出默认携带方括号、元素间逗号分隔的格式,当前实际运行输出为
[78, 99, 54, 63, 56, 14, 67],不符合题目要求 - 已尝试的无效调整操作:
- 使用
replaceAll和removeAll方法调整输出格式 - 将list与空字符串拼接修改输出内容
- 以上操作均未生效,输出依然保留多余的逗号与方括号,需要调整实现让输出仅保留数字间的单个空格
- 使用
问题原因
之前的调整方式全部无效,核心原因有两点:一是你调用的replaceAll、removeAll方法本质是对列表内存储的元素本身做操作,不是修改对象打印时的拼接规则;二是直接打印ArrayList时,JVM会自动调用其默认的toString()方法,按照「[元素1, 元素2, 元素3]」的格式拼接字符串,你后续的字符串拼接操作没有从根源修改输出的拼接逻辑,自然达不到格式要求。
可直接落地的调整方案
注:你之前写的removeDuplicate方法逻辑完全符合题目要求,不需要做任何修改,仅需调整最终的输出环节即可。
- 基础实现(兼容所有Java版本):
// 去重完成后执行输出逻辑 StringBuilder output = new StringBuilder(); for (int i = 0; i < list.size(); i++) { // 非第一个元素前追加单个空格,保证元素间仅一个空格分隔 if (i != 0) { output.append(" "); } output.append(list.get(i)); } System.out.println(output); - 简化实现(Java 8及以上版本可用):
import java.util.stream.Collectors; // ...省略其他业务逻辑 String output = list.stream() .map(String::valueOf) .collect(Collectors.joining(" ")); System.out.println(output);
内容的提问来源于stack exchange,提问作者Tristan
相关产品推荐
相关产品推荐

