关闭

Java集合类框架—Set、HashSet、TreeSet

164人阅读 评论(0) 收藏 举报
分类:

概述

Set :无序,不可重复。
HashSet :底层是使用了哈希表来支持的,特点: 存取速度快.
TreeSet :如果元素具备自然顺序 的特性,那么就按照元素自然顺序的特性进行排序存储。

HashSet

HashSet的实现原理:
往Haset添加元素的时候,HashSet会先调用元素的hashCode方法得到元素的哈希值 ,然后通过元素 的哈希值经过移位等运算,就可以算出该元素在哈希表中 的存储位置。

情况1: 如果算出元素存储的位置目前没有任何元素存储,那么该元素可以直接存储到该位置上。

情况2: 如果算出该元素的存储位置目前已经存在有其他的元素了,那么会调用该元素的equals方法与该位置的元素再比较一次,如果equals返回的是true,那么该元素与这个位置上的元素就视为重复元素,不允许添加,如果equals方法返回的是false,那么该元素运行 添加。

TreeSet

  • 往TreeSet添加元素的时候,如果元素本身具备了自然顺序的特性,那么就按照元素自然顺序的特性进行排序存储。
  • 往TreeSet添加元素的时候,如果元素本身不具备自然顺序的特性,那么该元素所属的类必须要实现Comparable接口,把元素
    的比较规则定义在compareTo(T o)方法上。

  • 如果比较元素的时候,compareTo方法返回 的是0,那么该元素就被视为重复元素,不允许添加.(注意:TreeSet与HashCode、equals方法是没有任何关系。)

  • 往TreeSet添加元素的时候, 如果元素本身没有具备自然顺序 的特性,而元素所属的类也没有实现Comparable接口,那么必须要在创建TreeSet的时候传入一个
    比较器。

  • 往TreeSet添加元素的时候,如果元素本身不具备自然顺序的特性,而元素所属的类已经实现了Comparable接口, 在创建TreeSet对象的时候也传入了比较器,那么是以比较器的比较规则优先使用。

如何自定义比较器

如何自定义定义比较器: 自定义一个类实现Comparator接口即可,把元素与元素之间的比较规则定义在compare方法内即可。

class  类名  implements Comparator{

}

TreeSet是可以对字符串进行排序 的, 因为字符串已经实现了Comparable接口。

字符串的比较规则:

  • 对应位置有不同的字符出现, 就比较的就是对应位置不同的字符。
  • 对应位置上 的字符都一样,比较的就是字符串的长度。
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

JavaSE入门学习36:Java集合框架之Set接口及其实现类HashSet和TreeSet

一Set接口       Set接口可以与数学中的集合的概念相对应。Set接口是Collection接口的子接口,Set接口里多个对象之间没有明 显的顺序。具体详细方法请参考API文档(可见身边随...
  • erlian1992
  • erlian1992
  • 2016-05-06 20:39
  • 1209

TreeSet,Hashset,Set集合转为整型数组

TreeSet,Hashset,Set集合转为整型数组; TreeSet集合转为整型数组,Hashset集合转为整型数组,Set集合转为整型数组的方法类似
  • guyuealian
  • guyuealian
  • 2016-03-27 11:17
  • 7153

Java集合(实现类线程安全性)

1、集合和Map     下图是Java集合的Collection集合体系的继承树:     下图是Java的Map体系的继承树:     对于Set、List、Qu...
  • yuyibing888
  • yuyibing888
  • 2016-01-22 23:27
  • 3496

JavaSE入门学习36:Java集合框架之Set接口及其实现类HashSet和TreeSet

一Set接口       Set接口可以与数学中的集合的概念相对应。Set接口是Collection接口的子接口,Set接口里多个对象之间没有明 显的顺序。具体详细方法请参考API文档(可见身边随...
  • erlian1992
  • erlian1992
  • 2016-05-06 20:39
  • 1209

Java集合框架-2.【Set】【HashSet】【TreeSet】

一、Set集合 1、特点:      ①、元素是无序的(存入和取出的顺序不一定一致),且元素不可以重复。  ②、Set集合的功能和Collection一致。 2、Set集合体系结构: Collecti...
  • mayor125
  • mayor125
  • 2014-09-06 11:59
  • 570

Java集合框架(Set与Map,HashSet与HashMap,TreeSet与TreeMap)

定义
  • u013344815
  • u013344815
  • 2015-10-14 17:45
  • 1177

Java集合框架:Set(HashSet,LinkedHashSet,TreeSet)

Set概述 Set几乎都是内部用一个Map来实现, 因为Map里的KeySet就是一个Set,而value是假值,全部使用同一个Object。Set的特征也继承了那些内部Map实现的特征。HashSe...
  • u013256816
  • u013256816
  • 2016-03-17 21:37
  • 2506

JAVA基础再回首(十七)——Set集合、增强for、HashSet类、LinkedHashSet类、TreeSet类、二叉树、Comparator 排序

JAVA基础再回首(十七)——Set集合、增强for、HashSet类、LinkedHashSet类、TreeSet类、二叉树、Comparator 排序 版权声明:转载必须注明本文转自程序员杜鹏...
  • m366917
  • m366917
  • 2016-08-21 17:43
  • 1520

Java集合类4—HashSet、TreeSet、HashMap、TreeMap介绍

在前面我们已经介绍了题目中几个类分别实现了哪个接口。HashSet和TreeSet都直接或者间接的继承了Set接口,所以它存储的元素中不允许出现重复元素。     我们先来介绍一下HashSet。H...
  • mengxiangyue
  • mengxiangyue
  • 2011-10-17 19:55
  • 5853

java的集合中的Set以及set的实现类HashSet和TreeSet

Set接口 Set是Collection的子接口,与List相对 Set集合中的元素的特点是1,无序性 2,无下标3,无重复的元素 Set是个接口,所以无法直接创建对象,要依赖它的实现类来创建对...
  • HKDxiaofan
  • HKDxiaofan
  • 2017-12-20 20:55
  • 47
    个人资料
    • 访问:46555次
    • 积分:1342
    • 等级:
    • 排名:千里之外
    • 原创:93篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类