按长度和字母顺序添加字符串到TreeSet
5星 · 超过95%的资源 需积分: 39 185 浏览量
更新于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
最新资源
- pageflo:新的超级灵活的开源CMS
- pumpy.contracts
- autd3-library-firmware-cpu
- Postman_v4.1.3.rar
- svt-apl:TE4 SVT Praktik回购
- pre
- Python库 | google_apitools-0.4.4-py2.7.egg
- BMI_CALCULATOR
- msdcback
- redditSwipe:Android 应用程序列出了最热门的 reddit 图像并提供了类似 Tinder 的滑动效果
- DayPlanner:作业5
- canaryaero.github.io
- Java面试题大全(2021年).rar
- 方差分区
- ansible-collection-vrealize_log_insight:vrealize_log_insight Ansible角色集合
- TeambitionShare:挂载Teambition文件可直链共享支持网盘(需申请)和项目文件(无需邀请码)