一个菜鸟java码农的成长之路(6):Set集合总结
2016-10-07 16:19
609 查看
Set集合 (1)Set集合的特点 无序,唯一 (2)HashSet集合 A:底层数据结构是哈希表(是一个元素为链表的数组) B:哈希表底层依赖两个方法:hashCode()和equals() 执行顺序: 首先比较哈希值是否相同 相同:继续执行equals()方法 返回true:元素重复了,不添加 返回false:直接把元素添加到集合 不同:就直接把元素添加到集合 C:如何保证元素唯一性的呢? 由hashCode()和equals()保证的 D:开发的时候,代码非常的简单,自动生成即可。 E:HashSet存储字符串并遍历 F:HashSet存储自定义对象并遍历(对象的成员变量值相同即为同一个元素) (3)TreeSet集合 A:底层数据结构是红黑树(是一个自平衡的二叉树) B:保证元素的排序方式 a:自然排序(元素具备比较性) 让元素所属的类实现Comparable接口 b:比较器排序(集合具备比较性) 让集合构造方法接收Comparator的实现类对象 3:Collection集合总结 Collection |--List 有序,可重复 |--ArrayList 底层数据结构是数组,查询快,增删慢。 线程不安全,效率高 |--Vector 底层数据结构是数组,查询快,增删慢。 线程安全,效率低 |--LinkedList 底层数据结构是链表,查询慢,增删快。 线程不安全,效率高 |--Set 无序,唯一 |--HashSet 底层数据结构是哈希表。 如何保证元素唯一性的呢? 依赖两个方法:hashCode()和equals() 开发中自动生成这两个方法即可 |--LinkedHashSet 底层数据结构是链表和哈希表 由链表保证元素有序 由哈希表保证元素唯一 |--TreeSet 底层数据结构是红黑树。 如何保证元素排序的呢? 自然排序 比较器排序 如何保证元素唯一性的呢? 根据比较的返回值是否是0来决定 4:针对Collection集合我们到底使用谁呢? 唯一吗? 是:Set 排序吗? 是:TreeSet 否:HashSet 如果你知道是Set,但是不知道是哪个Set,就用HashSet。 否:List 要安全吗? 是:Vector 否:ArrayList或者LinkedList 查询多:ArrayList 增删多:LinkedList 如果你知道是List,但是不知道是哪个List,就用ArrayList。 如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。 如果你知道用集合,就用ArrayList。 5:在集合中常见的数据结构 ArrayXxx:底层数据结构是数组,查询快,增删慢 LinkedXxx:底层数据结构是链表,查询慢,增删快 HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals() TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序
相关文章推荐
- 一个菜鸟java码农的成长之路(1):集合简介
- 一个菜鸟java码农的成长之路(2):迭代器Iterator接口概述
- 一个菜鸟java码农的成长之路(3):ListIterator的使用及注意的问题
- 一个菜鸟java码农的成长之路(4):用LinkedList模拟栈结构
- [置顶] 一个菜鸟java码农的成长之路(5):如何获取10个1-20的随机数,要求不能重复
- 一个Android应用开发菜鸟的成长之路——工作第一天:解决了java.lang.NoClassDefFoundError问题
- Java菜鸟成长之路__Day_4_Java_如何写一个标准类?
- 一个Android小菜鸟的成长之路
- java中List、Set、Map集合的遍历方法总结
- java 常用集合list与Set、Map区别及适用场景总结
- Java菜鸟成长之路__Day_1_Java概述及基础语法
- Java菜鸟成长之路__Day_2_Java_方法
- Java菜鸟成长之路__Day_3_Java_一维数组
- Java菜鸟成长之路__Day_3_Java_二维数组
- 一个java菜鸟入行一年总结
- java集合: List、Set、Map总结 + HashMap/Hashtable 差别
- Java菜鸟成长之路__Day_4_Java_面向对象
- Java菜鸟成长之路__Day_4_Java_抽象,继承,接口
- Java菜鸟成长之路__Day_4_Java_内部类
- Java菜鸟成长之路__Day_4_Java_返回值为类怎么办?