按长度和字母顺序添加字符串到TreeSet
5星 · 超过95%的资源 需积分: 39 158 浏览量
更新于2024-09-07
收藏 894B TXT 举报
在Java编程中,TreeSet是一种有序集合,它实现了SortedSet接口,允许存储唯一(无重复)的元素,并自动维护元素的自然顺序。当要求按照特定规则对字符串进行排序时,如题目所述,我们需要自定义一个Comparator来实现字符串的排序逻辑。在这个例子中,排序规则是首先按字符串的首字母顺序(字典顺序),如果首字母相同,则按字符串长度进行排序。
首先,我们看`Add`类的`main`方法部分:
1. 初始化一个名为`news()`的方法,可能是用于获取一组待添加到TreeSet的字符串数组或列表,但具体实现未给出,所以我们假设它返回了一个字符串数组。
2. 创建一个`TreeSet`对象`t`,并传入`news()`方法的结果,这样所有添加的字符串将自动按照我们的自定义排序规则插入。
3. 使用`add`方法依次添加多个字符串,包括"asd", "csdwqd", "as", "bsdasdsa", "ca", "defg", 和 "a"。
4. 使用`Iterator`遍历`TreeSet`,打印出按照排序规则排列的字符串。
接着,我们看`Comparator`类的`compare`方法:
1. 重写`compare`方法是自定义排序的关键,这里接收两个参数`a1`和`a2`,都是类型为`Object`的字符串对象。
2. 首先,将`Object`类型转换为`String`类型,分别赋值给`s1`和`s2`。
3. 计算每个字符串的第一个字符的整数值(通过`charAt(0)`获取字符并转换为`Integer`),使用`compareTo`方法比较它们的大小。如果`num`小于0,说明`s1`的首字母在字典顺序上排在`s2`之前。
4. 如果`num`等于0,说明首字母相同,此时继续比较字符串长度。通过`length()`方法获取每个字符串的长度,同样转换为`Integer`后进行`compareTo`比较。如果`num1`也等于0,说明长度也相同,此时使用`compareTo`方法决定它们的相对顺序。
5. 最后,根据`num`和`num1`的比较结果返回相应的比较结果,从而确保整个排序过程是先按首字母再按长度进行。
这个示例展示了如何在Java中使用TreeSet结合自定义Comparator实现按照字符串首字母和长度的混合排序。通过这种方式,可以轻松处理任何具有特定规则的排序需求,使得代码更具灵活性和可扩展性。
2013-03-18 上传
2023-06-10 上传
2021-05-06 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
圣灵守望
- 粉丝: 2
- 资源: 1
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析