Java中的集合类,集合框架,集合接口

一、什么是集合类

集合类存放于java.util包中。 
集合类存放的都是对象的引用,而非对象本身,元素类型都为Object。
出于表达上的便利,称集合中的对象就是指集合中对象的引用(reference)。 
集合类型主要有3种:set(集)、list(列表)和map(映射)。

通俗的说,集合就是一个放数据的容器,准确的说是放数据对象引用的容器。 

二、集合类的分类

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);

}



你可能感兴趣的:(Java编程,Java编程,集合类集合框架,姜国海)