集合
多个变量的集合体
集合可以放多个元素 不定长
ArrayList有序 可重复
add()添加 元素
add(int index, E element)将指定的元素插入此列表中的指定位置
get()获取 索引位置的元素
size()获取集合中元素个数
remove(int index)移除此列表中指定位置上的元素。
remove(Object o)移除o元素,
removeAll(Collection c)
移除此 collection 中那些也包含在指定 collection 中的所有元素
contains(Object o)
如果此 collection 包含指定的元素,则返回 true。
clear()移除此列表中的所有元素。
集合的结构图
接口
collection | Map
List | Set |
类
ArrayList HashSet | HashMap Hashtable
LinkedList TreeSet
Vector
Stack
ArrayList 和LinkedList
效率
实际测试效果
元素添加删除 耗时
ArrayList 底层 object数组 访问效率高 操作效率首元素低
LinkedList 底层 双向链表 操作效率首元素高 访问效率低
Vector 底层
List有序 可重复
Set 无序 不可重复
泛型
限定 集合所能容纳的元素泛型
Vector和ArrayList 区别
Vector 线程安全
ArrayList 线程不安全
HashMap Hashtable区别
null 不为空
不安全 安全
Stack 栈 先进后出 后进先出
push 压栈
pop 出栈
peek 查看栈顶元素
Set
不可重复 hash值 不一样则对象不一样
equals 方法
无序 存入的顺序和取出的顺序不同
List 是接口类型 ,可以定义对象引用,然后用他的实现类(比如 java.util.ArrayList java.util.LinkedList等)去初始化它,而不能new List()来初始化 ;
Set 也类似
Set集合遍历方式
1.toString();
转成Object[]
2.for的增强型
for(Object x:Set集合){
}
3.迭代器Iterator
Iterator it=set集合.iterator();
it.hashNext();//判断是否有元素
it.next();//取值
Collections.sort(list);
将List 集合中的元素 升序排序
注意 List 集合中的元素必须是 可比较的 Comparable
Comparable
int ComparTo(比较对象)对象比较值
0 咱俩相等
整数 我比你大
负数 我比你小
作业
实现从大到小排序
排序的第二种形式
Compareator
int compare(Object o,Object o1) 方法 定义 比较规则
第一种形式 要求元素 必须实现Comparable
第二种形式 第三方仲裁 比较规则 策略模式
hm.keySet();//key set 集合
hm.values();//value的集合
hm.entrySet();//返回键值对的集合
put(key,value);存值 将值以键值对形式保存
get(key);取出key对应的value值
keySet();返回key的value值
values(); 返回value值的 collection集合。
entrySet(); 返回Entry键值的 set集合。
clear() 从此映射中移除所有映射关系。
clone() 返回此 HashMap 实例的浅表复制:并不克隆键和值本身。
containsKey(Object key) 如果此映射包含对于指定的键的映射关系,则返回 true。
containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true
remove(Object key) 如果此映射中存在该键的映射关系,则将其删除。
重要的东西
基本用法
数据结构
key 不能重复 value后面覆盖前面
HashMap 允许null key可以有一个 value可以任意个
concurrent 线程同步
Collections.synchronizedMap();//将hashMap变成安全的
HashTable HashMap
1.是否安全 安全 不安全
2.是否为空 不允许 允许