8、集合和泛型

简介: 堆栈:先进后出,像个容器,入口和出口都是栈顶、压栈和弹栈都是操作栈顶元素队列:先进先出、队列的入口和出口各占一侧数组:通过索引查找元素速度快;增删元素速度慢链表:多节点之间通过地址连接,增删只需要修改下个元素的地址速度比较快,没有索引位置查找速度比较慢

数据存储的常用结构有:

堆栈:先进后出,像个容器,入口和出口都是栈顶、压栈和弹栈都是操作栈顶元素

队列:先进先出、队列的入口和出口各占一侧

数组:通过索引查找元素速度快;增删元素速度慢

链表:多节点之间通过地址连接,增删只需要修改下个元素的地址速度比较快,没有索引位置查找速度比较慢

集合

Java集合面试(看这一篇就够了)

泛型

Java中的泛型


源码分析:

new ArrayList<要存储元素的数据类型>();

Arraylist集合底层是一个Object[]数组

new ArrayList<>();给数组赋空值

new ArrayList<>(2);传入初始化容量,如果容量大于0赋值给原来的Object数组,如果为0赋空值,其他抛异常

添加元素add(E e):

首先判断当前创建的对象是否是空数组,如果是则加入的个数与默认的个数(10)比较取最大值,默认容量设置为10

如果加入的个数大于集合设置的长度时,调用grow方法扩充容量,原来的容量右移一位再加上原来的长度设置为新的容量,再调用数组的拷贝函数,将原来的内容拷贝到新数组里

往指定位置插入元素add(int idnex,E element):

与add(E e)方法大致一致,主要的差异是多了个拷贝函数,从index之后内容全部拷贝到index+1之后,然后把新内容放到index位置上

移除(根据下标移除和根据元素移除):

从index+1之后内容全部拷贝到index之后,把size-1的位置的元素赋值为null,方便GC回收


目录
相关文章
|
6月前
|
安全 Java vr&ar
泛型和Map集合的不同
泛型和Map集合的不同
|
1月前
|
存储 安全 Java
34.C#:listT泛型集合
34.C#:listT泛型集合
16 1
|
8月前
|
存储 算法 Java
集合和泛型的详细讲解(一)
集合和泛型的详细讲解
40 0
|
8月前
|
存储 安全 Java
集合和泛型的详细讲解(二)
集合和泛型的详细讲解
69 0
|
8月前
|
Java
java泛型:泛型类,泛型接口,泛型方法,泛型集合
java泛型:泛型类,泛型接口,泛型方法,泛型集合
|
9月前
|
存储 C# 索引
C#泛型集合常用方法
C#泛型集合常用方法
42 0
|
9月前
|
安全 C# 索引
C# 泛型集合和非泛型集合(List ArrayLIst)
C# 泛型集合和非泛型集合(List ArrayLIst)
58 0
|
Java 编译器
【数据结构】什么是泛型?为什么要使用泛型?泛型怎么用?那包装类呢?
发现Integer底层维护了一个数组,这个数组值的范围为[-128,127],如果Integet对象的值在这个范围内,直接从cache数组中拿,类似于字符串常量池,就是Integer类型的引用直接指向数组对应值的地址,如果Integer对象的值超过这个范围,会创建新的对象
【数据结构】什么是泛型?为什么要使用泛型?泛型怎么用?那包装类呢?
GoogleGuava - 第 2 章 集合——新集合类型
GoogleGuava - 第 2 章 集合——新集合类型
90 0
GoogleGuava - 第 2 章 集合——新集合类型
|
Java 容器 程序员
集合 泛型回顾
泛型和通配符回顾 最近在阅读源码的过程中发现自己对泛型和通配符的理解好像已经有点遗忘,还有就是有些混乱,今天借着这个机会就好好复习一下泛型知识。 最近在逛知乎,看源码的时候看到了关于泛型和通配符的一些知识。
990 0