集合框架图
Collection
所有单值集合的顶级接口
常用方法:
add(Object obj):将obj元素添加到集合中
remove(Object obj):将obj元素从集合中删除
clear():将集合中的元素清空
isEmpty():判断集合是否为空
contains(Object obj):判断集合中是否包含obj元素
size():返回集合中的元素个数
List
Collection的子接口
顺序存储,有下标索引,允许重复
特有方法:
add(int index, Object obj):在指定索引上,添加指定元素
remove(int index):删除指定索引上的值
set(int index, Object obj):将指定索引上的值,
修改为指定的值
get(int index):根据给定的索引,获取对应位置的值
包含三个实现类:
ArrayList:数组实现,顺序存储
LinkedList:节点实现,链式存储(每个元素都存储在一个节点中,节点除了元素数据本身以外,还 需要存储下一个元素的内存地址)
特有方法:
由于在LinkedList中,维护了链表的头和尾节点的对象地址,
所以操作头部和尾部非常容易,提供了大量的操作头和尾的方法。
addFirst(Object obj):在头部添加元素
addLast(Object obj):在尾部添加元素
removeFirst():删除头部元素
removeLast():删除尾部元素
getFirst():获取头部元素
getLast():获取尾部元素
Vector
Set
Collection的子接口
特点:无序,不允许重复,没有下标索引
实现类:HashSet
HashSet的子类:LinkedHashSet
Map
存储的是一个个的 键值对 数据
是双值集合的顶级接口
常用方法:
1、增加键值对:put(K key, V value),注意:如果添加的键值对中的键之前存储过值,则会覆盖,并将旧值返回出去,如果都是新存储的键值,则返回null
2、删除方法:
根据给定的键,取出并删除对应的键值对:remove(K key)
清空集合:clear()
3、获取方法:
获取集合的大小:size(),获取键值对对数
根据给定的键,获取对应的值:get(K key)
4、判断方法:
判断集合中是否存在某个键:containsKey(Object obj)
判断集合中是否存在某个值:containsValue(Object obj)
5、修改方法:
根据给定的键,修改对应的值:put(K key, V value)
如果在集合中已经存在key这个键,那么使用put方法,就是修改
其对应的值;如果集合中不存在key这个键,那么使用put方法,
就是在集合中增加了一个键值对
6、遍历方法:
因为键值都是自己指定的,所以是无序的,遍历map只能通过以下方法来实现。
keyset(),获取键的set集合,然后遍历键的set集合,得到每一个键,通过键去找值:get(K key)。
实现类:
HashMap
HashMap和HashSet的关系
HashSet是由HashMap实现出来的,HashSet就是HashMap的 键的那一列
HashMap的子类LinkedHashMap
HashMap和Hashtable的关系
1、HashMap和Hashtable都是用于存储键和值的对应关系,
都是Map的实现类,都是使用哈希表的方式存储。
2、不同点:
1、版本不同,Hashtable是jdk1.0版本出现的,
HashMap是jdk1.2版本出现的
2、线程安全性不同,Hashtable是线程安全的,
HashMap是线程不安全的
3、Hashtable不能存储null键null值,
HashMap可以存储null键null值
4、命名规则:Hashtable时期没有形成完全严格的命名要求
集合的遍历方式:
1.转成数组,toArray(),不带泛型的转数组,得到的是 Object类型的数组。
2.迭代器,使用案列:
//获取迭代器对象
Iterator it = persons.iterator();
//反复判断是否有下一个元素(迭代器对象在不断的移动)
while(it.hasNext()) {
//获取下一个元素并且强转
Person p = (Person)(it.next());
//输出p
System.out.println(p.getName() + "..." +
p.getAge());
3.增强for循环,快捷键iter,注意: 使用增强for,没有拿到元素的索引,无法修改集合或者 数组中的元素值
4.Map集合遍历方法:
因为存储的是键值对且都是自己指定的,所以是无序的,要先通过keyset(),获取键的set集合,然后遍历键的set集合,得到每一个键,通过键去找值:get(K key)。