通俗的说,集合就是一个放数据的容器,准确的说是放数据对象引用的容器。
1.interface collection是最基本的集合接口。interface list,interface set,interface map是三种常见的集合类接口。所有的类都不能直接实现collection接口,而只能实现list,set,map接口。它的函数声明有:
boolean add(E e);//向集合中添加一个元素
boolean addAll( Collection c); //将集合c中的元素全部添加到集合中
boolean contains(Object o); //判断集合中是否包含对象o
boolean containsAll(Collection c);//判断集合中是否包含集合c中的所有元素
boolean equals(Object o);//判断集合是否和对象o相等(类型,值)
boolean remove(Object o);//删除一个元素
boolean removeAll(Collection c);//删除集合中和c中相同的元素
int size();//返回集合的大小,即存储对象的多少
Object [ ] toArray(); //将集合中的元素转化为数组
T[ ] toArray( T[ ] a); //将集合中的元素转化为数组并存在a中
2.interface list由collection派生,是有序的collection。实现list接口的类有:ArrayList类,LinkedList类。
(1)ArrayList的底层实现为数组,默认数组长度为10,若数据超过长度,则将数组长度翻倍(新建一个数组,将原来数组中的数据复制到新建的数组中)。这种实现方式直接访问快,插入删除慢。
(2)LinkedList的底层实现为双向链表。这种实现方式直接访问慢,插入删除快。
3.interface set由collection派生,set拒绝重复元素。实现set接口的类有:TreeSet,HashSet类。
(1)class TreeSet中,可以比较大小,并自动排序。只能添加同类型元素,并实现comparable接口。在此类中,实现拒绝添加同类型元素的机制为CompareTo(Object o)函数,添加的元素必须是同类型且值不同的元素。
(2)class HashSet中,不需要比较大小,故不需排序。在此类中,实现拒绝添加同类型元素的机制为equals()函数,只要不是类型相同值相等的元素均可添加。
4.interface Map不是由collection派生,map由两部分构成,一个是key,一个是value,其中key不允许重复,value允许重复。实现Map接口的类有:TreeMap,HashMap。
(1)class TreeMap中,可以比较key的大小,并按照key的大小自动排序。
(2)class HashMap中,接受null值,为非同步集合。
(3)class HashTable中,不接受null值,为同步集合。
5.java.util.Collections 是一个包装类(工具类/帮助类)。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,用于对集合中元素进行排序、搜索以及线程安全等各种操作,服务于Java的Collection框架。
static void shuffle(List list);
static void sort(List list);
static void swap(List list ,int i,int j);
可迭代是Java集合框架下的所有集合类的一种共性,也就是把集合中的所有元素遍历一遍。迭代的过程需要依赖一个迭代器对象,迭代器(Iterator)模式,又叫做游标模式,它的含义是,提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。简单的说,迭代器就是一个接口Iterator,实现了该接口的类就叫做可迭代类,这些类多数时候指的就是java.util包下的集合类。
interface Iterator 声明了以下函数:
boolean hasNext();
E next();
示例代码如下:
ArraySet set = new TreeSet();
set.add(1);
set.add(2);
set.add(3);
Iterator it = set.iterator(); //声明一个接口对象并把它指向set的迭代器
while(it.hasNext()){
Object e = it.next();
}
//遍历map:
Map map = new HashMap();
map.put("001","abc");
map.put("002","bcd");
TreeSet set = map.keySet();
for( Iterator it = set.iterator(); it.hasNext();){
Object key = it.next();
Object value = map.get(key);
System.out.println(key + ":" + value);
}