A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Honne 初级黑马   /  2019-9-6 16:25  /  866 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

--------------------------------------Set接口
特点:
1.不允许储存重复的元素
2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历

Set集合储存的元素必须重写hashCode方法和equals方法

--------------------------------HashSet集合存储数据的结构(哈希表)
存储数据的结构: 哈希表
哈希表
特点:速度快
本质:数组 + 链表/红黑树(提高查询的速度)

特点:
1.不允许存储重复的元素(通过在类中重写hashCode和equals方法实现去重)
2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历
3.是一个无序的集合,储存元素和取出元素的顺序有可能不一致
4.底层是一个哈希表结构(查询速度非常快)



------------------------------------哈希值
哈希值是一个十进制的整数,由系统随即给出(就是对象的地址值,是模拟出来得到地址,不是数据实际储存的物理地址)
在Object类有一个方法可以获取对象的哈希值

同一个对象多次调用hashCode()方法返回的哈希值是相同的
不同的hashCode一定来自于不同的对象

public native int hashCode();
native  代表该方法调用的是本地操作系统的方法


------------------------------------------------------LinkedHashSet
java.util.LinkedHashSet extends HashSet
底层是一个哈希表(数组+链表/红黑树+链表) 多了一个链表,记录元素储存顺序,保证元素有序,但依然不可重复

------------------------------------------------------TreeSet
特点:
元素有序, 这里不是指存取的顺序,而是按照一定的规则进行排序,具体的排序方式取决于构造方法:
TreeSet();     根据其自然排序进行排序
TreeSet(Comparator comparator)     根据指定的比较器进行排序
2.没有带索引的方法,所以不能使用普通for循环遍历
3.由于是Set集合,所以不包含重复元素

------------------------------------------------------泛型
泛型可以看作是一个变量,用来接收数据类型
泛型的本质是参数化类型
ArrayList集合在定义的时候,不知道集合中存储什么类型的数据,所以类型使用泛型
E e  elements
当创建集合对象时不使用泛型


定义含有泛型的方法: 泛型定义在方法的修饰符和返回值类型之间
格式
修饰符 <泛型> 返回值类型 方法名(参数列表<泛型>) {
........
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马