概述:容器包括Collection和Map。Collection存储对象,Map存储键值对。
一. Collection接口
Collection包括两个子接口,List、Set
1. List接口:有序、可重复的容器
- ArrayList:使用数组实现存储,
private Object[] elementDate;//定义Object数组和长度size
private static final int DEFALT_CAPACITY=10;//设定初始化长度10
add()方法
public void add(E e){
//数组扩容
if(size == elementDate.length){
Object[] newarr = new Object[elementDate.length(elementDate.length>>1)];//10-->10+(10/2)
System.arraycopy(elementDate, 0, newarr, 0, elementDate.length);
elementDate = newarr;
}
elementDate[size++] = e;
}
- LinkedList:使用双向链表实现存储
class Node {
Node previous; //前一个节点
Object element; //本节点保存的数据
Node next; //后一个节点
}
- Vector:用数组实现的List,线程安全
2. Set接口:无序、不可重复。Set加入元素实际上是把元素放入Map的Key处
- HashSet:无序
- TreeSet:内部进行排序(使用compareTo()方法)
二. Map接口
存储键(key)-值(value) 对。Map的实现类包括:HashMap、TreeMap、HashTable、Properties
- HashMap:键不能重复,如果发生重复,新的键值对会替换旧的键值对
- HashTable
三. 迭代器
- 迭代器遍历List
List<String> list = new ArrayList<String>();
for (Iterator<String> iter = list.iterator(); iter.hasNext();) {
String temp = iter.next();
System.out.print(temp + "\t");
}
- 迭代器遍历Set
Set<String> set = new HashSet<String>();
for (Iterator<String> iter = set.iterator(); iter.hasNext();) {
String temp = iter.next();
System.out.print(temp + "\t");
}
- 迭代器遍历Map
Map<String, String> map = new HashMap<String, String>();
//方法一
Set<Entry<String, String>> set= map.entrySet();
for (Iterator<Entry<String, String>> iterator = set.iterator(); iterator.hasNext();) {
Entry<String, String> entry = iterator.next();
System.out.println(entry.getKey() + "--" + entry.getValue());
}
//方法二
Set<String> ss = map.keySet();
for (Iterator<String> iterator = ss.iterator(); iterator.hasNext();) {
String key = iterator.next();
System.out.println(key + "--" + map.get(key));
}
网友评论