Java自定义ArrayList重写toString()方法如何去除末尾多余逗号
自定义ArrayList toString方法末尾多余逗号修正方案
问题原因
当前实现遍历元素时,给所有元素(包括最后一个)的尾部都拼接了", "分隔符,导致最终输出末尾多出冗余逗号,不符合Java标准集合的输出规范。
原有错误输出示例:
[Bananas, Apples, Pineapple, Peaches, Pears, Plum, ]
可用修正方案
方案1:遍历中判断索引位置追加分隔符
逻辑简单直观:只有当前元素不是最后一个元素时,才在元素后拼接分隔符。
修正后的toString()代码:
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("["); // 处理存储数组为null、集合为空的场景 if (store == null || size == 0) { return sb.append("]").toString(); } for (int i = 0; i < size; i++) { sb.append(store[i]); // 非最后一个元素才追加分隔符 if (i != size - 1) { sb.append(", "); } } sb.append("]"); return sb.toString(); }
方案2:参照JDK原生集合实现逻辑
JDK中AbstractCollection的toString采用先拼接第一个元素,后续元素前补分隔符的写法,避免每次循环都做索引判断,逻辑更简洁:
@Override public String toString() { // 空场景直接返回空集合格式 if (store == null || size == 0) { return "[]"; } StringBuilder sb = new StringBuilder(); sb.append("["); // 先拼接第一个元素 sb.append(store[0]); // 从第二个元素开始遍历,每个元素前拼接分隔符 for (int i = 1; i < size; i++) { sb.append(", ").append(store[i]); } sb.append("]"); return sb.toString(); }
修正后运行效果
运行测试代码,输出结果完全匹配Java标准集合格式:
- 新增6个水果后的输出:
[Bananas, Apples, Pineapple, Peaches, Pears, Plum] - 调用clear清空集合后的输出:
[]
内容的提问来源于stack exchange,提问作者Orest Dymarchuk
相关产品推荐
相关产品推荐

