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回收


目录
相关文章
|
2月前
|
存储 Java 编译器
Java集合定义其泛型
Java集合定义其泛型
21 1
|
7月前
|
存储 安全 Java
34.C#:listT泛型集合
34.C#:listT泛型集合
63 1
|
存储 算法 Java
集合和泛型的详细讲解(一)
集合和泛型的详细讲解
81 0
|
存储 安全 Java
集合和泛型的详细讲解(二)
集合和泛型的详细讲解
113 0
java泛型:泛型类,泛型接口,泛型方法,泛型集合
java泛型:泛型类,泛型接口,泛型方法,泛型集合
|
存储 C# 索引
C#泛型集合常用方法
C#泛型集合常用方法
72 0
|
安全 C# 索引
C# 泛型集合和非泛型集合(List ArrayLIst)
C# 泛型集合和非泛型集合(List ArrayLIst)
117 0
|
Java 编译器
【数据结构】什么是泛型?为什么要使用泛型?泛型怎么用?那包装类呢?
发现Integer底层维护了一个数组,这个数组值的范围为[-128,127],如果Integet对象的值在这个范围内,直接从cache数组中拿,类似于字符串常量池,就是Integer类型的引用直接指向数组对应值的地址,如果Integer对象的值超过这个范围,会创建新的对象
【数据结构】什么是泛型?为什么要使用泛型?泛型怎么用?那包装类呢?
GoogleGuava - 第 2 章 集合——新集合类型
GoogleGuava - 第 2 章 集合——新集合类型
114 0
GoogleGuava - 第 2 章 集合——新集合类型
|
编译器 C#
表达式树练习实践:C#值类型、 引用类型、泛型、集合、调用函数
表达式树练习实践:C#值类型、 引用类型、泛型、集合、调用函数
172 0