旗下导航:搜·么
当前位置:网站首页 > JAVA教程 > 正文

java中的不反复的鸠合有哪些【JAVA教程】,java,集合

作者:搜教程发布时间:2019-12-27分类:JAVA教程浏览:27评论:0


导读:Java鸠合类寄存于java.util包中,是一个用来寄存对象的容器。下面我们来看一下java中不反复的鸠合。Set:典范完成HashSet()是一个无序,不可反复的...

Java鸠合类寄存于 java.util 包中,是一个用来寄存对象的容器。下面我们来看一下java中不反复的鸠合。

Set:典范完成 HashSet()是一个无序,不可反复的鸠合

1、Set hashSet = new HashSet();

①、HashSet:不能保证元素的递次;不可反复;不是线程平安的;鸠合元素可认为 NULL;

②、其底层实际上是一个数组,存在的意义是加速查询速率。我们晓得在平常的数组中,元素在数组中的索引位置是随机的,元素的取值和元素的位置之间不存在肯定的关联,因而,在数组中查找特定的值时,需要把查找值和一系列的元素举行比较,此时的查询效力依赖于查找过程当中比较的次数。而 HashSet 鸠合底层数组的索引和值有一个肯定的关联:index=hash(value),那末只需要挪用这个公式,就能够疾速的找到元素或许索引。

③、关于 HashSet: 假如两个对象经由过程 equals() 要领返回 true,这两个对象的 hashCode 值也应当雷同。

2、Set linkedHashSet = new LinkedHashSet();

①、不能够反复,有序

由于底层采纳 链表 和 哈希表的算法。链表保证元素的增加递次,哈希表保证元素的唯一性

3、Set treeSet = new TreeSet();

TreeSet:有序;不可反复,底层运用 红黑树算法,擅长于局限查询。

* 假如运用 TreeSet() 无参数的组织器建立一个 TreeSet 对象, 则请求放入个中的元素的类必需完成 Comparable 接口所以, 在个中不能放入 null 元素。

以上三个 Set 接口的完成类比较:

共同点:

1、都不许可元素反复

2、都不是线程平安的类,解决办法:Set set = Collections.synchronizedSet(set 对象)

不同点:

HashSet:不保证元素的增加递次,底层采纳 哈希表算法,查询效力高。推断两个元素是不是相称,equals() 要领返回 true,hashCode() 值相称。即请求存入 HashSet 中的元素要掩盖 equals() 要领和 hashCode()要领

LinkedHashSet:HashSet 的子类,底层采纳了 哈希表算法以及 链表算法,既保证了元素的增加递次,也保证了查询效力。然则团体机能要低于 HashSet    

TreeSet:不保证元素的增加递次,然则会对鸠合中的元素举行排序。底层采纳 红-黑 树算法(树结构比较合适局限查询)

Map:key-value 的键值对,key 不许可反复,value 能够

1、严格来说 Map 并非一个鸠合,而是两个鸠合之间 的映照关联。

2、这两个鸠合没每一条数据经由过程映照关联,我们能够看成是一条数据。即 Entry(key,value)。Map 能够看成是由多个 Entry 构成。

3、由于 Map 鸠合即没有完成于 Collection 接口,也没有完成 Iterable 接口,所以不能对 Map 鸠合举行 for-each 遍历。

更多java学问请关注java基础教程栏目。

以上就是java中的不反复的鸠合有哪些的细致内容,更多请关注ki4网别的相干文章!

标签:java集合


欢迎 发表评论: