2020.5.1——TreeSet、for(String s:a)

本文深入探讨了Java中TreeSet的使用方式,重点讲解了如何利用TreeSet对字符串类型的日期进行自动排序。通过实例演示了TreeSet在添加元素时如何保持集合内部元素的有序性,为读者提供了清晰的代码示例。

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

知识点:
TreeSet会对加入元素自动排序

import java.util.Set;
import java.util.TreeSet;

public class cg {
	public static void main(String args[])
	{
		Set<String> ts=new TreeSet();
		ts.add("2013/10/22");
		ts.add("2012/7/9");
		for(String i:ts)
		{
			System.out.print(i+"\n");
		}
	}

}
上述代码片段展示了一个基于 Java 的操作流程,主要用于从 `javaProgrammers` 集合中提取程序员姓氏,并将它们存储到一个 **TreeSet** 中。下面是对该代码的逐步解析以及对 **TreeSet** 的介绍: ### 代码功能说明 ```java TreeSet<String> javaDevLastName = javaProgrammers .stream() // 将集合转为流(Stream),便于进行一系列中间和终止操作。 .map(Person::getLastName) // 使用 map 操作符获取每个 Person 对象的 lastName 属性值。 .collect(Collectors.toCollection(TreeSet::new)); // 收集结果至一个新的 TreeSet 容器。 ``` #### 步骤分解: 1. **`.stream()`**: 调用此方法会生成一个 Stream 流式处理对象,允许开发者使用诸如 filter、map 等函数式 API 来方便地处理数据源中的元素。 2. **`.map(Person::getLastName)`**: Map 函数会对每一个流里的元素应用指定的操作,在这里是通过引用方法的方式调用了 `Person.getLastName()` 获取所有人的 surname 姓氏字符串列表。 3. **`.collect(Collectors.toCollection(TreeSet::new))`**: Collect 方法用于聚集由前面步骤产生的最终数据结构形式;这里我们指定了返回的数据容器是一个新的 `TreeSet` 实例,这保证了结果集中没有重复项并且自动排序。 --- ### 关于 TreeSet - **定义**:Java Collections Framework (JCF) 内部的一个重要实现就是 `TreeSet`,它是一种保持自然顺序(升序) 或者根据自定义比较规则排列键值的非线性集合(set),内部采用红黑树(Red Black Tree)算法维护其平衡二叉查找树特性。 - **特点**: - 元素唯一性:因为 Set 接口规定不允许包含相同元素; - 自动排序机制:默认按照字典序列从小到达排布各节点位置; - 时间复杂度较低:对于插入、删除及搜索等基本运算而言平均情况下的时间效率较高O(log n). --- ### 示例程序验证效果 假如输入有以下人员信息: | First Name | Last Name | |------------|-----------| | Alice | Smith | | Bob | Johnson | | Charlie | Davis | | Diana | Smith | 经过上面一段代码转换后的输出将是去除了冗余并按字母表次第组织起来的结果:`[Davis, Johnson, Smith]`.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值