hpe实训课(Set内容相关)

Set

1.Set接口是继承于Collection
2.Set堆中存储的数据是无序的(不代表乱序)
3.Set中存储的数据是不可重复的:当Set中添加相同的元素,只能添加一个元素。
4.添加进Set中的元素一定要重写equals和hashCode方法
* 		①.Set中的元素存储使用哈希算法
* 		②.当向Set添加元素时,首先会调用该对象所在类的hashCode方法,计算对象的哈希值,这哈希值就决定了set元素的存储位置
* 		③.在通过equals()方法比较两个对象是否相同,如果相同,则后面的对象不能添加
5.实现类
* 		①.HashSet(主要实现类)
* 		②.LinkHashSet
* 		③.TreeSet
6.HashSet
* 		①.HashSet是Set接口的主要实现类。
* 		②.HashSet是采用哈希算法存储集合的元素,因此有很多存取和查询性能(底层数据结构是哈希表)
* 		  哈希表:综合数组和链表的优点(一个链表的数组)
* 		③.HashSet不能保证元素的排列数据,顺序和添加的顺序不一致
* 		④.内部存储机制:HashSet集合判断两个元素的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode值也相等。确保元素的唯一性。
* 		⑤.为什么不使用数组而使用HashSet?
* 			1).HashSet通过哈希值确定存储位置,可以自由的增加长度,并根据哈希值访问元素,不能挨个遍历索引去访问
7.LinkedHashSet
* 	 ①.LinkedHashSet是HashSet的一个子类
*   ②.LinkedHashSet是用链表维护元素的顺序
*   ③.输出集合元素时元素顺序和添加顺序一致的
8.TreeSet
* 	 ①.TreeSet是SortedSet接口的实现类
* 	 ②.TreeSet可以确保集合元素处理排序状态
* 	 ③.TreeSet内部是二叉树,默认是从小到大进行排序
* 	 ④.TreeSet采用两种排序方法:自然排序和定制排序(默认是自然排序)
9.List和Set区别
* 	 ①.List和Set都是Collection的子接口
* 	 ②.List是存储有序的 可以重复的数据
* 	 ③.Set是存储无序的不能重复的数据
* 	 ④.底层存储机制不同
public class TestSet {
	@Test
	public void testHashSet() {
		
		Set set = new HashSet();
		Integer number = new Integer(123);
		set.add(number);
		set.add(123);
		set.add(456);
		set.add("A");
		set.add(null);
		Person p1 = new Person("xiaoming", 23);
		Person p2 = new Person("xiaoming", 23);
		set.add(p1);
		set.add(p2);
		System.out.println(set);
		
		// 移除元素
		set.remove(123);
		System.out.println(set);
		
		// 清空元素
		//set.clear();
		//System.out.println(set);
		
		// 遍历Set集合
		// 使用迭代器遍历
		Iterator iterator = set.iterator();
		while (iterator.hasNext()) {
			Object obj = iterator.next();
			System.out.println(obj);
		}
		
		// 使用增强for循环
		for (Object object : set) {
			System.out.println(object);
		}
	}
}

发布了30 篇原创文章 · 获赞 0 · 访问量 1953

猜你喜欢

转载自blog.csdn.net/qq_38499019/article/details/104401156