学习笔记

xiaoxiao2021-02-28  37

1:登录注册案例(理解) 2: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:比较器排序 (集合具备比较性)   带参构造 // public TreeSet(Comparator comparator) //比较器排序 让集合构造方法,接收Comparator的实现类(子类)对象 C:把我们讲过的代码,看一遍即可 (4)案例: A:获取无重复的随机数 B:键盘录入学生,按照总分从高到底输出 3:Collection集合 总结(掌握) Collection  两大体系 |--List 有序,可重复 |--ArrayList 底层数据结构是数组,查询快,增删慢。 线程不安全,效率高 |--Vector 底层数据结构是数组,查询快,增删慢。 线程安全,效率低 |--LinkedList 底层数据结构是链表,查询慢,增删快。 线程不安全,效率高 |--Set 无序,唯一 |--HashSet 底层数据结构是哈希表。 如何保证元素唯一性的呢? 依赖两个方法:hashCode()和equals() 开发中自动生成这两个方法即可   快捷键alt+shift+s+h |--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: 底层数据结构是二叉树。两种方式排序:自然排序和比较器排序
转载请注明原文地址: https://www.6miu.com/read-2620717.html

最新回复(0)