01_集合框架(HashSet存储字符串并遍历).
Set集合的特点
存取无序,唯一,无索引
-------------------------------------------------------------------------------------------------------------------------------
02_集合框架(HashSet存储自定义对象保证元素唯一性).
要重写哪两个方法才能保证HashSet存储自定义对象保证唯一?
A:hashCode()
B:equals()
-------------------------------------------------------------------------------------------------------------------------------
03_HashSet存储自定义对象保证唯一性图解及优化.
如果判断两个对象不同依赖于hashCode()和equals().
先使用hashCode判断
情况1 哈希值不同: 代表这两个对象不是同一个对象 (证明这两个对象属性一定不同) 哈希值不同直接存储
情况2 哈希值相同:
子情况1:对象当中的属性值完全相同 不存
子情况2:对象属性不同,但是相加结果相同
!!如果哈希值相同我们就必须在用equals进行判断到底是子情况1还是子情况2
如果是子情况1 则不添加
如果是子情况2 则添加
哈希值不同的两个对象,属性值不同.
不同对象哈希值有可能相同
1、开发中怎样重写hashCode()和equals()?
自动生成。右键“source”,然后选择“Generate hashCode() and equals()”
以后如果遇到HashSet集合存储自定义对象,想要去重需要重写hashCode()和equals()
-------------------------------------------------------------------------------------------------------------------------------
04_集合框架(HashSet如何保证元素唯一性的原理).
-------------------------------------------------------------------------------------------------------------------------------
05_集合框架(LinkedHashSet的概述和使用).
LinkedHashSet特点
底层是链表结构,查询慢,增删快
它是Set体系下唯一一个能够保证怎么存就怎么取的集合
LinkedHashSet 它是HashSet的子类,所以保证元素唯一的用法和HashSet一致
-------------------------------------------------------------------------------------------------------------------------------
06_产生10个1-20之间的随机数要求随机数不能重复.
思路回顾
A 创建一个集合,因为随机数不能重复所以选择HashSet
B 通过while 循环把随机数添加到集合中 注意:循环的判断条件 使用集合的长度来判断
C 遍历集合把所有随机数取出来.
-------------------------------------------------------------------------------------------------------------------------------
07_集合框架(练习).
使用 Scanner 从键盘读取一行输入,去掉其中重复字符, 打印出不同的那些字符
思路回顾:
A 创建一个键盘录入对象,得到一个字符串
B 把字符串转换成字符数组
C 创建集合对象因为要求不重复,所以HashSet
D 通过增强for遍历char数组,得到每一个字符并存到集合中
E 遍历集合得到没有重复的数据.
-------------------------------------------------------------------------------------------------------------------------------
08_集合框架(练习).
-------------------------------------------------------------------------------------------------------------------------------
09_集合框架(TreeSet存储Integer类型的元素并遍历).
TreeSet集合的特点
1 继承自Set的三条特点
2 可以实现元素的排序.
-------------------------------------------------------------------------------------------------------------------------------
10_集合框架(TreeSet存储自定义对象).
如果向TreeSet中储存自定义对象,想要实现排序那么必须完成以下两步操作
1 对象所属的类去实现Comparable接口
2 重写接口中的compareTo()方法.
-------------------------------------------------------------------------------------------------------------------------------
11_TreeSet保证元素唯一和自然排序的原理和图解.
TreeSet 底层结构:二叉树
那么,Treeset是如何存储数据的呢?
A:是拿第一个元素做为根节点,依次和其他元素比较
B:大了 往右放
小了 往左放
从二叉树结构中取数据的内存规则
原则:从根节点开始,以左中右的原则取出
-------------------------------------------------------------------------------------------------------------------------------
12_集合框架(TreeSet存储自定义对象并遍历练习1).
TreeSet存储自定义对象并遍历练习1(按照姓名排序)
public int compareTo(Person o) {
//
//我们再去考虑如何去比较数据时,首要考虑的是这个数据的主要条件
//我们在写一个方法是主要条件是比较容易分析出来的
//次要条件才是难点
int num = this.name.compareTo(o.name); //主要条件
return num == 0 ? this.age - o.age : num; //次要条件
}
-------------------------------------------------------------------------------------------------------------------------------
13_集合框架(TreeSet存储自定义对象并遍历练习2).
public int compareTo(Person o) {
int length = this.name.length() - o.name.length(); //
int num = length == 0 ? this.name.compareTo(o.name) : length; //
return num == 0 ? this.age - o.age : num; //
}
-------------------------------------------------------------------------------------------------------------------------------
14_TreeSet保证元素唯一和比较器排序的原理.
匿名内部类回顾:
new Inter(){
重写Inter中的抽象方法
}
比较器接口:Comparator 重写 compare()
使用比较器接口的方式:
使用TreeSet的带参构造里面需要传递一个 Comparator 的子类对象.
compar(Student s1 , Student s2){
s1 是新添加的元素
s2 是根节点
}
从小到大排序 s1 - s2
从大到小排序 s2 - s1
-------------------------------------------------------------------------------------------------------------------------------
15_集合框架(TreeSet原理).
-------------------------------------------------------------------------------------------------------------------------------
16_集合框架(练习).
在一个集合中存储了无序并且重复的字符串,定义一个方法,让其有序(字典顺序),而且还不能去除重复
-------------------------------------------------------------------------------------------------------------------------------
17_集合框架(练习).
从键盘接收一个字符串, 程序对其中所有字符进行排序,例如键盘输入: helloitcast程序打印:acehillostt
-------------------------------------------------------------------------------------------------------------------------------
18_集合框架(练习).
程序启动后, 可以从键盘输入接收多个整数, 直到输入quit时结束输入. 把所有输入的整数倒序排列打印.
|
|