java集合框架的练习之TreeSet集合的运用

本文介绍了一种利用Java中的TreeSet集合对输入字符串中的所有字符进行排序的方法。通过定义自定义比较器来确保字符能够按照特定规则进行排序,并且在输出时去除重复项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TreeSet集合属于Set集合的子类, 具有:无序(存,取顺序不一致),无索引,不可重复存储的特点


要求:
 从键盘接收一个字符串,程序对其中所有的字符进行排序并输出.
 
分析:
 1.键盘录入字符串
 2.将字符串转换为字符数组   字符数组内含compareTo()方法
 3.定义TreeSet集合,传入比较器对字符排序并保留重复
 4.遍历字符数组,将每一个字符存储在TreeSet集合中
 5.遍历TreeSet集合,打印每一个字符

代码如下:

import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;

public class Sort {

    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("please input a String:");
        String line = sc.nextLine();
        char[] c = line.toCharArray();
        
        TreeSet<Character> ts = new TreeSet<>(new Comparator<Character> () {
            
            @Override
            public int compare(Character c1, Character c2) {
                //int num = c1 - c2;           //自动拆箱
                int num = c1.compareTo(c2);
                return num == 0 ? 1 : num;
            }
        });
        
        for (char ch : c) {
            ts.add(ch);                 //自动装箱
        }
        
        for (Character character : ts) {
            System.out.print(character);
        }
        
        sc.close();
    }

}


运行结果:


https://github.com/striner/javaCode/blob/master/TreeSet



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值