设置接口的框架
1个套装;
2
3导入列表测试。人;
4导入org . JUnit . test;
五
6导入Java . util . hashset;
7导入Java . util . iterator;
8导入Java . util . linkedhashset;
9导入Java . util . set;
10
11 /**
12 * 1.set接口的框架
13 */- Collection接口:单列集合,用于逐个存储对象。
14 */- Set接口:存储无序不可重复的数据。——《高中收藏》
15 */- HashSet:是Set接口的主要实现类;线程不安全;您可以存储空值。
16 */- LinkedHashSet:作为HashSet的子类,可以按照加法的顺序遍历其内部数据。
17 *对于频繁遍历操作,LinkedHashSet比HashSet效率更高。
18 */- TreeSet:可以根据添加对象的属性进行排序。放入TreeSet的数据必须是同一类新的对象。
19 *
20 * 2.集合接口中没有定义额外的新方法,但它们都在集合中定义。
21 * 3.要求:对于添加到集合中的数据,其类必须覆盖equals()和hashCode()。
22 * 重写后的equals()和hashCode()方法尽可能一致,即“相等的对象必须有相等的hash码”
23 *重写两种方法的技巧:应该使用对象中用作equals()方法比较的Field来计算hashCode。
24 *
25 * @作者付景超
26 * @ date : 2021/12/18-15:55
27 */
28公共类设置
29 /*
30 1.Set:存储无序且不可重复的数据。
31以HashSet为例说明:
31.无序:不等于随机性。基础数组中存储的数据不是按照数组索引的顺序添加的,而是根据数组的哈希值确定的。
33
34.重复性:保证当添加的元素按照equals()方法判断时,不能返回true,即同一元素只能添加一个元素。
35
36二。添加元素的过程(HashSet底层:数组加链表结构):以HashSet为例:
31.我们将元素A添加到HashSet中。首先,我们调用元素A所属类的hashCode()方法计算元素A的哈希值,然后通过某种算法在HashSet的底部计算这个哈希值。
38.数组中的存储位置(即对应的索引位置),用于确定数组的该位置是否已经有元素:
39 如果该位置没有其他元素,则添加成功。-情况1
40 如果这个位置有其他元素B(或者有链表形式的多个元素),首先比较元素A和B的哈希值:
41如果哈希值不相同,则成功添加元素A。-情况2
42如果哈希值相同,则需要在元素A所在的位置调用equals():
4Equals()返回true,则元素A的添加失败。
4Equals()返回false,则元素A添加成功。-情况3
45
46对于成功添加的情况2和3,元素A存储在链表中,数据已经在索引位置。
47对于jdk7:新元素A放在数组中,指向元素b。
48对于jdk8:元素B放在数组中,指向新元素a。
四十九
50
51 */
五十二
53 @测试
54 public void test1(){ 0
55 Set Set=new HashSet();
56 set . add(456);
57 set . add(123);
58 set . add(' AA ');
59 set . add(777);
60套。添加(新的人('汤姆',12));
61集。添加(新人物('汤姆',12));
62套.加(' CC ');
63
64 Iterator迭代器=set . Iterator();
65 while(iterator . HasNeXt()){ 0
66 system . out . println(iterator . next());
67 }
六十八
69 }
70
71 //LinkedHashSet的使用
72 //LinkedHashSet是Hash的一个子类。添加数据时,每个数据维护两个引用来记录前一个数据和后一个数据。
73 //优点:对于频繁的遍历操作,LinkedHashSet比HashSet效率更高。
74 @测试
75 public void test2(){ 0
76 Set Set=new link edhashset();
77 set . add(456);
78 set . add(123);
79套。添加(' AA ');
80套。添加(777);
81集。添加(新人物('汤姆',12));
82集。添加(新人物('汤姆',12));
83套。添加(' CC ');
84
85迭代器迭代器=设置。迭代器();
86 while(迭代器。HasNeXt()){ 0
87系统。出去。println(迭代器。next());
88 }
89
90 }
91
92 }
此为本人学习笔记,若有错误,请不吝赐教
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154005.html