
集合可以动态保存任意多个对象,使用方便
集合主要分为单列集合和双列集合(存放的是键值对key,value)
集合的框架体系

Collection接口下继承了两个子接口Set和List,他们的实现子类都是单列集合
Set接口的典型实现类有TreeSet,HashSet
List接口的典型实现类有Vector,ArrayLinkedList,ArrayList

Collection提供了一系列操作对象的方法,如add,remove,set,get(增删改查)

add可以添加任意类型数据,remove的参数可以为删除元素的索引值,或元素值
contains查找元素,和isEmpty返回一个布尔值
addAll可以传入一个集合进去,实现添加多个元素
containsAll可以传入一个集合,判断是否存在多个元素,返回布尔值
Collection接口遍历元素的方式
1.只要是实现了该接口的类都可以使用迭代器Iterator

先通过集合调用iterator方法获取一个迭代器
Iterator iterator = list.iterato();
使用itit快捷键创建循环遍历


如果希望再次使用迭代器遍历,需要重置当前的迭代器
iterator = list.iterator();
2.增强for循环(简化版iterator),也可以在数组里使用遍历
使用 I 快捷键创建循环
for(Object obj : list){
System.out.println(obj);
}
-------------------双列集合--------------------

Map接口下的实现类都是双列集合(k,v),有Hashtable,HashMap,TreeMap,其中HashMap是核心
Hashtable的子类为Properties
LinedHashMap继承了HashMap,也实现了Map接口
提供了一系列操作对象的方法

添加相同key值的元素时,会把旧的元素替换
entrySet集合存放元素的类型Map.Entry,Entry中存放了键值对(k,v),为了方便遍历
可以使用Map.Entry提供的两个方法
Map.Entry entry;
entry.getKey(); entry.getValue();
可以分别得到键和值
Map的常用方法

put(k,v); remove(k); get(k); size(); isEmpty(); clear(); containsKey(k);
Map接口的遍历方法(6种)
1.先取出所有的key,再通过key取出value
Map map = new HashMap();
Set keyset = map.keySet();//得到map的所有key值
(1)使用增强for
for(Object key : keyset) {
System.out.println(map.get(key));
}
(2)使用迭代器
Iterator iterator =keyset.iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
sout(map.get(key));
}
2.取出所有的value
Collection values = map.values();
(3)增强for
for(Object value : values) {
System.out.println(value);
}
(4)迭代器
Iterator iterator =values.iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
sout(next);
}
3.通过EntrySet获取k,v
Set entryset = map.entrySet();//获取所有的键值对
(5)增强for
for(Object entry : entryset) {
Map.Entry m =(Map.Entry) entry;
System.out.println(m.getKey());
System.out.println(m.getValue());
}
(6)迭代器
Iterator iterator =entryset.iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
Map.Entry m = (Map.Entry)next;
sout(m.getKey());
sout(m.getValue());
}
---------------------------

HashMap底层是数组table,初始化为16,(k,v)存放在Node结点中

---------------------------------


当添加的元素超出了临界值threshold,就会扩容,扩容后数组容量是之前的2倍+1。
--------------------------------
Properties

键和值都不可以为null,如果添加相同的key,value就会被替换

被折叠的 条评论
为什么被折叠?



