java学习记录(Day7)

  • Set集合
  1. HashSet

(1)添加数据add()

List 有序的  Set无序的

有序:取出的顺序和添加的顺序是一样的

实例化Set集合

Set中不能存储相同的数据

利用equals来比较是否为同一个对象,以上例子为同一个对象,所以size只加1

  1. 可以存null

只可以存储一个null值,因为HashSet的底层实现是HashMap,它不允许存在相同的key值。

  1. 打印Set

  1. TreeSet 红黑树
  1. 实例化

  1. 添加数据add()

因为树集合会自动根据元素的自然顺序或提供的比较器进行排序,这使得遍历集合时可以得到有序的结果。所以添加的数据必须是同一种类型的可比较,所以后面不能添加字符串,也不能添加null值

  1. 遍历
  1. 先序遍历

先遍历根节点,然后遍历左子树,最后是右子树

  1. 中序遍历

先遍历左子树,然后遍历根节点,最后是右子树

  1. 后序遍历

先左子树,然后右子树,最后遍历根节点

TreeSet 遍历方式是中序遍历

  1. TreeSet

(1)TreeSet 内部使用二叉树  内部的节点都是可比较大小的,默认的是从小到大输出

(2)同一个TreeSet对象存储的内容都应该是可以比较的

(3)默认情况下不能存储不同类型

当Student实现Comparable接口时,改写里面比较的方法。

然后实例化一个 TreeSet对象来存储。

这样可以不用传参数

<Student>限制输入的数据只能是Student类

若Student类不实现Comparable,只能通过构造比较器Comparator<Student>,然后在声明TreeSet对象的时候将比较器作为参数,才能实现Student类数据的比较。

LinkedHashSet  是有序的集合Set

  • Map
  1. Map  

存的是键值对   键 就是名字   值 存储的对象

  1. 实例化

向上转型

  1. 存放数据put(key,value)和获取key值对应的value值get(key)

  1. 删除键值对remove(key)

可以通过存入的key,删除键值对,会返回删除的value值

  1. 是否包含key

  1. 是否包含value值

  1. 获取所有的key

  1. 获取所有的value值

key值是唯一的,如果添加一个key值相同的就会将之前的value值覆盖

  1. TreeMap

key应该是可比较的

key不能是null值

  1. Hashtable

key,value都不能是null值

是线程安全的集合

(1)添加数据put(key,value)

ConcurrentHashMap  线程安全   效率较高

  1. HashMap

底层实现   数值加链表

HashMap 的数组默认容量是16,每次扩容两倍

扩容阈值0.75*16 达到12就开始扩容

一个链达到8就对该链进行树化,一个树上的元素低于6个就会退化成链

最小树化容量阈64如果数组的长度没有达到64  优先扩容

线程安全的Map  Hashtable  ConcurrentHashMap(性能优异  锁颗粒度比较小)

  • 泛型

广泛的数据类型,确保类型安全的一种途径

1.定义   类或方法上定义泛型

(1)在类上定义泛型

(2)定义属性

(3)定义方法

  1. 返回的类型和传入的类型是同一种

  1. 定义上限

该函数的功能是定义一个上限,使用泛型方法来接收一个类型为J的参数j,其中J必须是List的子类。函数将接收到的参数值原封不动地返回。

  1. 定义下限

首先定义类的关系

然后定义

该方法只有在List<? super A> a的类型大于或等于A p传入的类型时才能成立。

在类型转换的时候没有明确对象的数据类型进行强制数据类型转换会抛出ClassCaseException(数据转换异常)类型不安全

  1. 规范一个数据类型  确保类型安全

Key为String类型,value值为Object类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值