黑马程序员 Java基础——Set集合
来源:互联网 发布:淘宝怎么批量发布宝贝 编辑:程序博客网 时间:2024/04/30 10:55
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
Set集合
(1)Set集合的特点
无序,唯一
(2)HashSet集合
A:底层数据结构是哈希表(是一个元素为链表的数组)
B:哈希表底层依赖两个方法:hashCode()和equals()
执行顺序:
首先比较哈希值是否相同
相同:继续执行equals()方法
返回true:元素重复了,不添加
返回false:直接把元素添加到集合
不同:就直接把元素添加到集合
C:如何保证元素唯一性的呢?
由hashCode()和equals()保证的
如果元素的hashCode值相同,才会判断equals是否为true。
如果元素的hashCode值不同,不会调用equals。
注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法。这里要注意,是否重写hashCode和equals方法。
D:开发的时候,代码非常的简单,自动生成即可。
E:HashSet存储字符串并遍历
F:HashSet存储自定义对象并遍历(对象的成员变量值相同即为同一个元素)
(3)TreeSet集合
A:底层数据结构是红黑树(是一个自平衡的二叉树)
B:保证元素的排序方式
a:自然排序(元素具备比较性)
让元素所属的类实现Comparable接口
b:比较器排序(集合具备比较性)
让集合构造方法接收Comparator的实现类对象
TreeSet保证元素唯一性的依据:
TreeSet排序的第一种方式:让元素自身具备比较性。
元素需要实现comparable接口,覆盖compareTo方法。这种方式也称为元素的自然顺序,也叫默认顺序。
TreeSet的第二种排序方式。
当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要让集合自身具备比较性。因此定义了比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。当两种排序都存在时,以比较器为主
定义一个类,实现Comparator接口,覆盖compare方法。
Iterator接口
主要方法:
boolean hasNext():若被迭代的集合元素还没有被遍历,返回true.
Object next():返回集合的下一个元素.
void remove():删除集合上一次next()方法返回的元素。(若集合中有多个相同的元素,都可以删掉)
iterator对于集合才能用,foreach不同,只要是循环都可用。
模板代码:
Iterator iter = l.iterator();
while(iter.hasNext())
{
System.out.println(iter.next());
}
- 黑马程序员——Java基础—集合(Set、List)
- 黑马程序员:Java基础——Set集合之HashSet
- 黑马程序员:Java基础——Set集合之TreeSet
- 黑马程序员——JAVA基础之set集合
- 黑马程序员——java基础之Set集合
- 黑马程序员 Java基础——Set集合
- 黑马程序员—java基础_集合List和Set
- 黑马程序员 java基础之set集合
- 黑马程序员---Java基础---Set集合
- 黑马程序员---java基础之集合Set
- 黑马程序员-java基础-set集合
- 黑马程序员-java基础之集合List,Set集合
- 黑马程序员--java基础--集合框架Set,集合框架map
- 黑马程序员————java基础--------集合之set接口的特点及应用
- 黑马程序员——java基础拾遗之集合框架(一) List 和 Set
- 黑马程序员——Java基础---集合(Set及Map)
- 黑马程序员——JAVA基础------集合框架(二)----Set接口
- 黑马程序员——Java基础---集合
- GRUB笔记:grub.conf解析 stage介绍 grub故障及安装
- ORA- 12012 : err or on aut o execu te of job ORACLE_OCM. MGMT_CONFIG_JOB_2_1 ORA-29280: inval
- Android sqlite3数据库开发中的sqlite3 not found 问题的解决
- flex 安全沙箱问题
- 【Unity】怎么判断鼠标双击
- 黑马程序员 Java基础——Set集合
- POP3、SMTP和IMAP之间的区别和联系
- 十进制计数器的设计
- 12.Python标准库_数学与随机数 (math包,random包)
- 沙盒操作的核心函数 - NSSearchPathForDirectoriesInDomains用法
- LeetCode 12: Integer to Roman
- 学习网站
- Nginx Location配置总结
- Surrounded Regions