JavaSE学习笔记——2019/1/13(上午)

HashSet

存储自定义对象,保证元素的唯一性,要求两个对象的成员变量值相同,则为同一个元素

HashSet底层依赖的是hashCode()和equals()方法,方法没有重写,所以默认使用的事Object类,这时候哈希值是想通过的,执行添加。

执行顺序:首先比较哈希值是否相同,相同继续执行equal()方法,返回false才添加元素,不同就直接把元素添加到集合

哈希表:是一个元素为链表的数组。综合了数组和链表的好处(字典)

桶结构

LinkedHashSet:

底层数据结构由哈希表和链表组成。哈希表保证元素的唯一性、链表保证元素有序

TreeSet:

排序有两种方式:自然排序、比较器排序

底层是二叉树结构。(红黑树是一种自平衡的二叉树)

存储进去:

第一个元素存储的时候,直接作为根节点存储。从第二个元素开始,每个元素从根节点开始比较

大     就作为右孩子

小     就作为左孩子

相等 就不搭理

取出来:

前序遍历、中序遍历、后序遍历

 

int num2 = num==0?this.name.compareTo(s.name):num;

要实现自然排序就需要implements Comparable<T>接口,排序取决于给出的排序条件,还要知道次要条件的更新

1、先实现接口2、写compareTo方法3、根据主要条件,再自己找次要条件

int num2 = num==0?this.name.compareTo(s.name):num;

int num3 = num2==0?this.age-s.age : num;

return num3;

 

比较器排序

public TreeSet(Comparator comparator)

 

TreeMap

TreeSet集合保证元素排序唯一性的原理

唯一性:是根据比较的返回是否是0来决定的

排序:

自然排序(元素具备比较性):让元素所属的类实现自然排序接口Comparable

比较器排序(集合具备比较性)让集合的构造方法接受一个比较器接口的子类对象Comparator

 

程序练习:

编写一个程序获取10个1-20的随机数,要求随机数不能重复(Set)

键盘录入5个学生信息(姓名,数学成绩,语文成绩,英语成绩),根据总分排名输出控制台

分析1、定义学生类2、创建一个TreeSet3、总分从高到低实现4、录入五个学生信息5、遍历TreeSet集合

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值