数组:
数组的长度是固定的,只能存放固定长度的数据,10
数组存放的数据都是同一种数据类型,
集合:java中存放数据的容器,可以用来存放多个数据
存放多个数据,长度不是固定的,可以随意进行添加 修改 查询 删除
Collection:list集合和set集合的父接口
存放单列数据,定义了存放数据的方法集合
add():添加指定元素到指定集合中
addAll():指定集合添加到原有集合中
clear():清除集合中所有的元素
contains():判断指定的元素是否在指定的集合中
containsAll():判断指定集合是否在原有的集合中
hashcode():返回集合的哈希码值
isEmpty():判断集合的内容是否等于null
iterator():获取集合所有的元素的迭代器
remove(Object) :删除指定的元素
size()集合的长度
List: 有序(添加的顺序和获取的顺序是一致的) 可以重复元素(集合中有重复的内容)的集合
ArrayList LinkedList vector区别
add(int,object) 指定的元素插入集合中的指定的位置
addALL():指定的集合插入原有集合中的指定的位置
get():通过元素的下标获取对应的元素
idnexOf():指定元素在集合中第一次出现的位置
lastIndexOf():指定元素在集合中最后一次出现的位置
remove(int):通过下标删除指定的元素
set(int Object):指定的元素替换集合中指定位置上的元素
Arrayiist:
是list集合主要实现类 ,动态数组来实现的,任何数据插入包括null,快速随机访问存储元素。支持随机访问,查询数据块,增删比较慢
jdk1.7之前:初始化为10长度的数组
jdk1.8之后。创建一个长度为0,的数组,添加第一个元素的时候在创建一个初始容量为10的数组
如果超过数组的长度,对原有数组进行扩容,原有的长度的1.5倍
LikedList:
以链表的的形式进行保存元素,频繁增删的比ArrayList要快一些
vector:
ArrayList和LinkedList集合区别
线程不安全的,执行效率高,ArrayList实现基于动态数组来实现的,LinkedList 链表实现的,对应随机访问的get和set,ArrayListx效率比linkedList高,LinkedList指针的移动,对于新增和删除 LinkedList要占优势,因为ArrayList集合要进行数据的移动
ArrayList和vector区别
几乎是相同,唯一的区别 vector是属于同步类,内存使用率要比ArrayList要大,访问要慢。大多数情况下适用ArrayList而不是vector
set:collection集合的子类
set集合没有提供额外提供方法
set集合不允许包含重复的元素,无序的集合,如果尝试把两个相同的元素添加到set集合中,则会添加失败
add方法会判断两个对象是否相同 使用equals方法,
Hashset:
是set集合的实现类,大部分情况使用时set集合的hashset集合
hash算法来存储集合的中元素,增加 查询 删除
1.不保证元素的排列顺序
2.hashset不是线程安全
3集合中的元素可以为null
添加元素的时候,调用元素的hashcode方法得到hashcode值通过散列函数决定该对象在hashset集合中存储的位置,如果两个元素的hashcode值相同,继续调用equals方法,如果equals方法返回true,添加失败,false添加成功,元素到集合中,如果对应位置有 元素的话,链表的方式进行存放
TreeSet
可以保证元素处于排序的状态
自然排序和定制排序(比较器排序)
Treeset自然排序(默认的排序方式)
自然排序:
Comparable接口指定排序的类
重写compareTo()比较元素之间的大小关系
0:两个对象相同
正数:当前对象大于参数对象
负数:当前对象小于参数对象
定制排序,比较器排序
comparatore接口指定排序的类
重写compare(Object T1,Object T2) 比较两个参数的大小,
0:相同
正数:T1>T2
负数 T1<T2
map
用于保存映射关系的数据 key-value
put:添加的方法
键是不能有重复
键有重复,put相当于修改
remove删除该方法:通过键删除
get()通过键获取对应的值
获取map集合的方式
Set<> se=集合.keySet()
for(){
集合.get(键的名字)
}
entrySet():返回具有映射关系的set集合的视图
getKey()获取键
getValue()获取值
HashMap:
频率最高的一个实现类,键和值都可以null。不保证元素的顺序
所有key都是set集合 无序,不可以重复,key中添加的类必须重写hashcode和equals方法
value都是collection 有序 可以重写,value所在的类重写euqals()
判断key相同的标准是 equals和hacode
value:euqals方法返回true
存储结构:
jdk1.8之前:数组+链表
jsk1.8之后:数组+链表——红黑树
TreeMap:
key进行排序的,自然排序和比较器排序
自然排序:
Comparable接口指定排序的类
重写compareTo()比较元素之间的大小关系
0:两个对象相同
正数:当前对象大于参数对象
负数:当前对象小于参数对象
定制排序,比较器排序
comparatore接口指定排序的类
重写compare(Object T1,Object T2) 比较连个参数的大小,
0:相同
正数:T1>T2
负数 T1<T2
Collections代表是集合的工具类
sort():对list集合进行升序排列