Java学习日志。(笔记)

泛型:


概述:泛型是jdk5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。

格式:<数据类型>;注意:泛型只能支持引用数据类型。

集合体系的全部接口和实现类都支持泛型的使用。

1.好处:
1.1:统一数据类型。
1.2:把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为编译阶段类型就能确定下来。

2.泛型可以在类、方法、接口定义时使用。

2.1:自定义泛型类:定义类的同时定义了泛型的类。
2.1.1格式:修饰符 class 类名 <泛型变量>{}

例如:public class MyArrayList<T>{}

此处泛型变量T可以随便写为任意标识,常见的如E、T、K、V等。

2.1.2:作用:编译阶段可以指定数据类型,类似于集合的作用。(类中把出现泛型变量的地方全部替换成传输的真实数据类型)

2.2:泛型方法:定义方法时同时定义了泛型的方法就是泛型方法。
2.2.1格式:修饰符<泛型变量>方法返回值 方法名称(形参列表){}

例如:public <T>void show (T t){}

2.2.2作用:方法中可以使用泛型接受一切实际类型的参数,方法更具备通用性。(方法中把出现泛型变量的地方全部替换成传输的真实数据类型。)

2.3:泛型接口:使用了泛型定义的接口。
2.3.1:格式: 修饰符 interface 接口名称<泛型变量>{}

例如:public interface Data<E>{}

2.3.2作用:泛型接口可以让实现类选择当前功能需要操作的数据类型。(实现类可以在实现接口的时候传入自己操作的数据类型,这样重写的方法都将是针对于该类型的操作。)

3:通配符:?

3.1:在使用泛型时,?代表一切类型。
E、T、K、V是在定义泛型时使用的。

3.2:泛型的上下限:
?extends Car:?必须是Car或者其子类  泛型上限。
? super Car:?必须是Car或者其父类  泛型下限。

list类系列:

1.list系列集合特点:有序、可重复、有索引。
有序:存储和取出的元素顺序一致。
有索引:可以通过索引操作元素。
可重复:储存的元素可以重复。

2.底层:

2.1:ArrayList是基于数组实现的,根据索引查询元素快,增删相对慢。
第一次创建集合并添加信息时,默认创建一个长度为10的数组,后每次空间不足时将长度右移一位,再加上原本的长度,即扩增1.5倍。


2.2:LinkedList是基于双链表实现的,查询元素慢,增删首尾元素快。

3.遍历方式:
迭代器:(创建迭代器对象,然后写while循环。)

foreach循环。

Lambda表达式。

for循环(因为List集合存在索引。)

set集合系列:

1.特点:无序、不可重复、无索引。

HashSet:无序,不重复,无索引。

LinkedHashSet:有序、不重复、无索引。

TreeSet:排序、不重复、无索引。

底层原理:
HashSet集合底层采取哈希表存储的数据,是对于增删改查数据性能都较好的结构。
Jdk8以前底层使用数组+链表组成,之后增加了红黑树结构。

哈希表:
1.哈希值:依据对象的地址,按照一定规则算出的int类型的数值。

2.过程:
2.1:创建一个默认长度为16的数组,数组名为table,
2.2:根据元素的哈希值跟数组的长度取余计算出应存的位置。(哈希算法。)
2.3:判断当前位置是否为null,如果是null则直接存入。
2.4:如果位置不为null,表示有元素,则调用equals方法比较。
2.5:如果一样,那么表示这两者地址相同,不存入。
jdk7中,新元素占老元素位置,指向老元素。
jdk8中新元素挂在老元素下面。


map集合:

map集合是一种双列集合,每个元素包含两个数据。
每个元素的格式为“key=value”即键值对元素。
每个键都是唯一的,值为键的附属品,多个键对应的值可以相同,但是每个键都是不同的。

collection系列集合可以看做是只有键没有值的特殊map集合。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值