2021/08/13

泛型

泛型方法:

       在调用方法时,指明泛型的具体类型

泛型好处:(传参数时限制类型,取值时不需要强制转换

       简单安全,将运行时相关的类型错误提前到编译时错误

泛型接口 :

       和泛型类差不多

泛型方法注意事项:

  1. public与返回值中间的<T,E…>可以理解声明此方法为泛型方法
  2. 一般用T,E,K,V参数
  3. 在泛型类中使用泛型方法无需在声明泛型
  4. 是否拥有泛型方法,与其所在的类是否泛型类没有关系。要定义泛型方法,只需将泛型参数列表至于返回之前

泛型接口:

       与泛型类完全相同

类型通配符:(不是在声明泛型类,泛型接口时用的,是在创建类对象时使用的

       一般就是一个 ?代替具体参数类型,切记是实参不是形参

类型通配符的上限语法:

注 意:

       泛型只存在代码编译阶段,在进入JVM之前,泛型相关的信息会被擦除掉,我们称之为类型擦除

类型通配符好处:

       限制泛型,继承之后可以调用方法

Java中集合

Java集合框架:

       相当于数组的增强版本,可以实现数组中不容易实现的功能,在某些场景中就是为了代替数组的

数组和集合类有何不同:

  1. 数组和集合类都是容器
  2. 数组长度是固定的,集合长度是可变的
  3. 数组中可以存基本数据类型和引用数据类型,但是集合只能存对象
  4. 数组中存储数据类型是单一的,集合可以存储任意类型的对象

集合类的特点:

       只能存储对象,长度是可变的,可以存储不同类型的对象

Collection接口:

       Collection有三个子接口 List,Set,Queue

  1. List:元素存取是有序的,可以存放重复元素,元素都有下标
  2. Set:元素都是无序的,不可以存放重复元素,元素没有下标,元素不可以重复
  3. Queue:队列,实现了先进先出

集合的通用遍历方法有以下几种:

  1. 普通for遍历
  2. 增强型for遍历
  3. 使用迭代器遍历

List接口实现类:(List所代表的是有序的Collection

  1. ArrayList:线程不安全,底层使用数组实现长度可变查询速度块增删慢
  2. LinkedList:链表结构,底层使用链表实现可变长度增删速度快
  3. Vector:底层使用数组实现,线程安全,但是速度慢,已经被ArrayList代替
  4. Stact:先进先出,底层调用Vector类中的方法,数组实现

LinkedList类:

ArrayList与Vector的区别:

       相同点:底层都是由数组实现的

       不同点:

  1. ArrayList不同步,线程相对不安全。效率相对高;Vector同步的线程相对安全,效率相对较低
  2. ArrayList是JDK1.2出现的Vector是JDK1.0的时候出现的
  3. 扩容方式不同,ArrayList默认是原数组的1.5倍,Vector默认是原数组的2倍
  4. 实现方法不同

Set接口实现类:

  1. HashSet:底层调用HashMap中的方法,集合元素唯一,不保证迭代顺序,(无序,不重复)取速度快,线程不安全
  2. TreeSet:TreeSet中的元素不重复,并能按照指定顺序排列,存储的对象必须实现Comparable接口线程不安全(不同步)
  3. LinkedHashSet哈希表链表实现了Set接口,元素唯一,保证迭代顺序,有序不重复

HashSet特点:

TreeSet:

Map接口实现类

       类型参数:

              K-此映射所维护的键的类型

              V-映射值的类型添加

       一个映射不能包含重复的键,每个键最多只能映射到一个值,Value可以相同

注意:

       Map的存储的是键值对,必须保证键是唯一的,他没有继承Collection

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值