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

为包装类自定义打印方法:将HashSet输出改为{1@2@3}等格式

自定义HashSet的输出格式解决方案

当然可以实现你想要的自定义输出格式啦!你完全不用去修改Integer这类包装类的打印逻辑(而且Integer是final类,根本没法继承重写它的toString方法),我们只需要自己处理集合的输出即可。

为什么默认输出是[1, 2, 3]?

HashSet的toString()方法继承自AbstractCollection,这个方法会遍历集合中的元素,用逗号分隔,前后加上方括号,所以默认输出是[元素1, 元素2, ...]的格式。

方案一:手动拼接字符串(最直观)

通过遍历集合元素,用StringBuilder手动拼接成你想要的格式:

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class CustomSetPrint {
    public static void main(String[] args) {
        Set<Integer> mySet = new HashSet<>();
        mySet.add(1);
        mySet.add(2);
        mySet.add(3);
        
        StringBuilder sb = new StringBuilder("{");
        Iterator<Integer> iterator = mySet.iterator();
        while (iterator.hasNext()) {
            sb.append(iterator.next());
            // 只有后面还有元素时才加分隔符
            if (iterator.hasNext()) {
                sb.append("@");
            }
        }
        sb.append("}");
        
        System.out.println(sb); // 输出:{1@2@3}
    }
}

方案二:用Java 8+ Stream API(更简洁)

利用Stream的Collectors.joining()方法,可以快速实现自定义分隔符、前缀和后缀:

import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;

public class CustomSetPrint {
    public static void main(String[] args) {
        Set<Integer> mySet = new HashSet<>();
        mySet.add(1);
        mySet.add(2);
        mySet.add(3);
        
        String formattedStr = mySet.stream()
                .map(Object::toString) // 将每个元素转为字符串
                .collect(Collectors.joining("@", "{", "}")); // 分隔符@,前缀{,后缀}
        
        System.out.println(formattedStr); // 输出:{1@2@3}
    }
}

进阶:封装成工具方法(复用性更高)

如果需要多次使用这种自定义格式,可以把逻辑封装成通用工具方法:

import java.util.Set;
import java.util.stream.Collectors;

public class CollectionFormatUtils {
    public static <T> String formatSet(Set<T> set, String separator, String prefix, String suffix) {
        return set.stream()
                .map(Object::toString)
                .collect(Collectors.joining(separator, prefix, suffix));
    }
}

// 调用示例
public class CustomSetPrint {
    public static void main(String[] args) {
        Set<Integer> mySet = new HashSet<>();
        mySet.add(1);
        mySet.add(2);
        mySet.add(3);
        
        // 输出{1@2@3}
        System.out.println(CollectionFormatUtils.formatSet(mySet, "@", "{", "}"));
        // 还可以轻松改成其他格式,比如【1|2|3】
        System.out.println(CollectionFormatUtils.formatSet(mySet, "|", "【", "】"));
    }
}

这样你就能轻松得到任何你想要的自定义输出格式啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:43:53