TreeSet录入重复的元素及保证录入&输出顺序一致的Java实现

Java萌新在学习路上遇到的一个扯dan的问题解法:

知识点:

Set,TreeSet ,TreeSet自然排序,TreeSet比较器排序,Comparator

原题目:

  请编写main()方法,按以下要求顺序 循环接收控制台录入的字符串. 并把这些字符串存储到TreeSet集合中. 当控制台录入quit时,停止录入数据, 并打印集合. 要求: 
可以存储重复内容
集合中元素的存储顺序和控制台录入的顺序保持一致.打印集合大小 
注意: 这里隐藏了两个条件 
1. 可以存储重复元素, 所以肯定不能使用String的自动排序功能,
2. 保持和输入的顺序一致, 则意味着新添加的元素应该放在集合的后边, 即排序时返回值应该>0

 隐藏条件让我误以为不能使用String泛型.....,其实是想用比较器排序

代码:

public class Test02 {
    public static void main(String[] args) {
        TreeSet<String> tSet = new TreeSet<>(
                new Comparator<String>() {
                    @Override
                    public int compare(String o1, String o2) {
                       if(o1.equals(o2)){
                           //重复的放在左边
                           return -1;
                       }
                       //保证输出顺序
                        return 1;
                    }
                }
        );

        Scanner sc = new Scanner(System.in);
        lp:
        while (true) {
            System.out.println("开始录入:");
            String input = sc.nextLine();
            if ("quit".equals(input)) {
                break lp;
            } else {
                tSet.add(input);
            }
        }
        System.out.println("size: "+tSet.size());
        System.out.println("Set: "+tSet);
    }
}

以上为萌新记录编码日常,欢迎大佬提出意见!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值