泛型Collection List Set

集合

1 Collection接口

1.1 集合前言

Java语音的Java.util包中提供了一些集合类,这些集合类又称之为容器

提到容器不难想到数组,集合类与数组最主要的不同之处是,数组的长度是固定的,集合的长度是可变的,而数组的访问方式比较单一,插入/删除等操作比较繁琐,而集合的访问方式比较灵活

常用的集合类有LIst集合,Set集合,Map集合,其中List集合与Set集合继承了Collection接口,各个接口还提供了不同的实现类。

 

1.2 集合概念

集合的英文名称是 Collection,是用来存放对象的数据结构,而且长度可变,可以存放不同类型的对象,并且还提供了一组操作成批对象的方法,Collection接口层次结构,中的根接口,接口不能直接使用,但是该接口提供了添加元素/删除元素/管理元素的父接口公共方法。由于List接口与Set接口都继承了Collection接口,因此这些方法对于List集合和Set集合是通用的。

1.3 集合的继承结构

1.4 Collection方法速查表

2 泛型

2.1概念

我们可以观察一下,下面的代码中有什么元素是我们之前没见过的呢?

其实就是< ? >的部分,它就是泛型

泛型是(Generice) JDK1.5的一个新特性,通常用来和集合对象一起使用

泛型概念非常重要,它是程序的增强器,它是目前主流的开发方式

2.2作用

那泛型有什么作用呢?

我们可以把泛型理解成一个“语法糖”,本质上就是编译器为了提供更好的可读性而提供的一种小手段,小技巧,虚拟机层面是不存在所谓“泛型”的概念的。

我们可以通过泛型的语法定义<>,来约束集合中元素的类型,编译器可以在编译期根据泛型约束提供一定的类型安全检查,这样可以避免程序运行时才暴露BUG,代码的通用性也会更强

泛型可以提升程序代码的可读性,但是他只是一个“语法糖”(编译后这样的部分会被删除,不出现在最终的源码中),所以不会影响JVM后续运行时的性能。

2.3 泛型声明

泛型可以在接口 类 方法上使用

 

在 方法的返回值前声明了一个,表示后面出息的E是泛型,而不是普通的Java变量

2.4 常用名称

3 List接口

3.1 概述

有序的Collection(也称为序列),此接口的用户可以对列表中的每个元素的插入位置进行精确的控制,用户可以根据元素的整数索引(在列表中的位置)来访问元素,并搜索列表中的元素

3.2 特点

     1.元素都有下标

     2.数据是有序的

     3.允许存放重复的元素

3.3 LIst方法速查表

在这里插入图片描述

4 ArrayList

4.1 概述

   1.存在Java.util包中

   2.内部是用数组结构存放数据,封装数组的操作,每个对象都有下标

   3.内部数组默认的初始容量是10,如果不够会以1.5倍的容量增长

   4.查询快,增删数据效率会低

在这里插入图片描述

在这里插入图片描述

4.2 创建对象

在这里插入图片描述

5 LinkedList

5.1 概述

链表,两端效率高,底层就是链表实现的 

在这里插入图片描述

请添加图片描述 

在这里插入图片描述 

5.2 创建对象

LinkedList()构造一个空列表

5.3 常用方法

 

 

6 ArrayList扩容

ArrayList相当于在没指定initialCapacity时就是会使用延迟分配对象数组控间,当第一次插入元素时才分配10(默认) 个对象空间。假如有20个数据需要添加,那么会分别在第一次的时候,将ArrayList的容量变为10; 之后扩容会按照1.5倍增长。也就是当添加第11一个数据的时候, Arraylist继续扩容变为10*1.5=15;当添加第16个数据时,继续扩容变为15*1.5=22个

ArrayList没有对外暴露其容量个数,查看源码我们可以知道,实际其值存放在elementData对象数组中,那我们只需要拿到这个数组的长度,观察其值变化了几次就知道其扩容了多少次。怎么获取呢?只能用反射技术了。

在这里插入图片描述 

在这里插入图片描述 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员黑马二代

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值