Java测试开发--Set、Map、List三种集合(四)

1.集合类型主要有3种:set(集)、list(列表)和map(映射)。

2.三者关系

 

 

3.Set

set接口是Collection接口的一个子接口,是无序的,set去重,也就是说set中不存在两个这样的元素a1.equals(a2)结果为true。但是set去重的前提条件是集合对象要重写equals+ hashcode 两个方法。

举个例子,首先先把对象的equals和hashCode方法注释掉,查看用set是否去重

 

 

 

把对象的equals和hashCode方法放开,查看用set是否去重

 

 

 

 查看运行结果,两个“张三”只显示了一个,去重了。

TreeSet:在集中以升序对对象排序的集的实现,这意味着从一个TreeSet对象获得第一个迭代器将按照升序来提供对象,TreeSet类使用了一个TreeMap

下面来看一个例子,当需要从一个Set集合中以有序的方式抽取元素时,TreeSet实现会有用处,为了能顺利进行,添加到TreeSet的元素必须是可排序的。

可以看到上面的输出是无序的,且没有重复,下面的输出就是按照首字母的顺序进行排序。

4.List

List接口继承了Collection接口是一个允许重复项的有序集合。

有2种List,ArrayList和LinkedList,两种list的结构不一样,结构如图

ArrayList:由数组实现的List,允许对元素进行快速随机访问,但是向List中间插入(这里的插入是向集合中间插入或正在扩容时)与移除元素的速度很慢。

LinkedList:对顺序访问进行了优化,向List中间插入与删除的开销并不大,随机访问则相对较慢,(使用ArrayList代替)

5、Map
treeMap按照key值排序,LinkMap按读入的顺序排序

posted @ 2021-07-14 17:36  胖儿1018  阅读(65)  评论(0编辑  收藏  举报