数组特点:
一组数据类型相同的元素集合
创建数组时,必须给定长度,而且一旦创建昌都不能改变
一旦数组装满元素,需要创建一个新的数组,将元素复制过去
缺点:
判断是否装满了,如果装满了,数组复制
如果我们从数组中删除一个元素添加一个元素,需要移动后面的元素
集合 API
1,集合的概念
JAVA中为了解决存储结构单一的问题,提供了很多不同结果的集合类,让我们可以根据不同的场景进行数据存储选择,提供了数组集合的实现,链表结构的实现,哈希结构,树结构等等
让JAVA程序员使用起来很方便
集合体系概述
Java的集合框架是由很多接口、抽象类、具体类组成的,都位于java.util包中。
集合分为单列和双列集合
单列集合:一次刚进去一个值(对象)
Collection 接口,定义了单列集合共有的方法
(集合容器中默认可以添加Object类型,但是一般还是习惯一个集合对象中只保存一种类型
,因为保存多个类型,后期处理时,涉及到类型的转换问题)
泛型:可以在声明类型时,自定义参数类型
ArrayList<E>
add(E e) ,,默认是向末尾添加元素
List :可以有重复的数据对象
ArrayList 数组列表
底层有一个数组,可以动态扩展数组长度,并提供一个一系列的方法操作
LinkedLIst 链表列表
底层是一个链表结构,查询慢,增加,删除快
List 接口集合迭代
for 循环遍历
增强for循环的遍历
迭代器遍历()
Vector 数组列表 线程安全的
每个都加的有锁·,线程安全,
Set:不可以有重复的元素
HashSet: 元素是无序的
HashSet 在添加元素时,是如何判断元素是否重复的:
当我们向集合中添加一个元素时,如何每次都使用equals()比较内容是否相等效率会很低
如何比较的:
在底层会先调用hashCode()--Object中的hashCode()返回的是对象的地址(不调用这个)
会调用类中重写的hashCode(),返回的是根据内容重新计算的哈希值
遍历时,会用哈希值先比较是否相等,会提高比较的效率
但是哈希值会出现问题,内容不同,哈希相同
此种情况下,在调用equals()比较内容,这样设计既提高判断效率,又保证安全
HashSet<String> set = new HashSet<>();
set.add("a");
set.add("a");
set.add("a");
set.add("a");
双列集合:键,值,