集合
# 集合:
用来储存或管理多个对象的容器
数组也可以存储对象 但对象的类型必须一致,数组的长度不可变,
集合可以同时存储任意类型的对象并且长度可变。
# 集合的特点;
1.可以存储对象
2.长度可变
3.集合不能储存基础数据类型;
集合的体系 根接口就是collection
1.增加
boolean add(obj)
boolean add(collection e)
2.删除
void clear();
boolean remove(object)
boolean removeall();
3.判断
boolean contains() 如果有就是ture
boolean retainAll()取交集
size()取个数
5获取
iterator iterator()
必须依赖于容器,而且每一个容器的内部结构都不同
collection 下游两个 list set
1.list 有序:有角标; 放入的顺序和取出的顺序一致
允许相同的元素
1.能在指定位置增加指定元素
boolean addAll (int index, Collection c)
indexOf(Object o) 查找第一次元素出现的位置
remove(int index) 最后一眼 输出元素
set(int index, E element) 用指定元素替换列表中指定位置的元素
2.vector:内部结构是数组数据结构 大小可变 是同步的 增长100% 线程安全
ArrayList 内部结构是数据结构 大小可变 是不同步的 增长50% 特点: 查询快 插入和删除慢
LinkedList 内部结构是链表结构 大小可变 是不同部的。 特点 :插入和删除快 查询慢
2.set 不允许相同的元素
练习 使用LinkedList 模拟堆栈 队列
Set接口
特点 不包含重复元素
内部结构是哈希表数据结构
1.hashSet
哈希算法算出来的顺序
2.LinkedHashSet 内部是由链表实现 正常的输入的顺序
3.TreeSet 元素的顺序是默认的升序排列 :只能存储能够排序的 而且是相同的数据类型
Map接口
1.hashmap类 健部分的顺序是通过hash算法算出来的顺序 线程不安全 键与值都能存空
2.hashtable 键部分的顺序是通过hash算法算出来的顺序 线程安全 键与值都不能存空
3.linkedhashmap 键部分的顺序是正常的输入顺序
4.Treemap 键部分是升序排列的
Collection算法类
里面提供了大量的方法对集合进行操作 常用的排序 默认的升序。