首页 > 代码库 > 集合框架

集合框架

集合框架

 

在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为Java集合框架(JavaCollectionFramework)。

 

Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对象,然后直接应用就可以了,这样就大大提高了编程效率。

 

 

 

 

技术分享

 

两大接口基类 Collection  和  Map    

Collection 有两个子接口 分别是:List接口 和 set接口  

ArrayList 实现类实现了  List接口

LinkedList 实现类  实现了   List接口

HasSet  实现类 实现了 set 接口

TreeSet 实现类 实现了 set 接口

 

HashMap  实现类  实现了Map 接口

 

所以通常说java集合框架共有三大类接口: List 、Set、 Map 、  他们都是集合接口,都可以用来存储很多对象

1.Collection 接口存储一组不唯一(允许重复)、无序的对象

2.Set 接口继承Collection接库,存储一组唯一(不允许重复)、无序的对象

3.List 接口继承Collection接口,存储一组不唯一(允许重复)、有序(以元素插入的次序来放置元素,不会重新排列)的对象

4.Map接口存储一组成对的 键——值 对象,提供 key(键)到 value(值) 映射。Map中的key不要求有序,允许重复。value 同样不要求有序,但允许重复。

5.Iterator接口负责定义访问和遍历元素的接口。

 

 

List 接口

 

实现Lise接口的常用类有 ArrayList 和 LinkedList。他们都可以容纳所有类型的对象,包括null,允许重复,并且都保证元素的存储顺序。

 

ArrayList集合类

他的优点在于遍历元素和随机访问元素的效率比较高。

ArrayList 对 数组进行了封装,实现了可变长度的数组。ArrayList存储数据的方式和数组相同,都是在内存中分配连续的空间,他的优点在于遍历元素和随机访问元素的效率比较高。

List  ×××  =  new  ArrayList();

方法详见  JDK  API   

LinkedList集合类

插入、删除元素时效率比较高,

LinkedList  ×××  =   new   LinkedList();

LinkedList 采用链表存储方式,优点在于插入、删除元素时效率比较高,

他有好多特有的方法。

 

 

Set接口

查找效率非常高

Set接口是Collection 接口的另外一个常用子接口, Set接口描述的是一种比较简单的集合,集合中的对象并不按特定的方式排序,并且不能保存重复的对象,也就是说Set接口可以存储一组唯一、无序的对象。  Set接口常用的实现类有  HashSet

 

 HashSet类

Set  ×××   =  new  HashSet();

1.集合内的元素时无序排列的

2.HashSet类是线程非安全的

3.允许集合元素值为 null

 

 

 

Map接口

优点是查询指定元素效率高

Map接口存储一组成对的 键 ————值 对象,提供 key(键) 到 value(值) 的映射。Map中的key不要求有序,不允许重复,最常用的实现类是 HashMap他的存储方式是哈希表。

 

HashMap集合类

Map  ×××  =   new  HashMap();

Hashtable 和 HashMap  的异同:

HashTable  继承自 Dictionary类   ,   HashMap 实现了 Map  接口

HashTable 是线程安全的, 不允许null值  (key 和 value 都不允许)

HashMap重速度、轻安全,是线程非安全的,允许null值(key 和 value 都允许

 

 

迭代器 Iterator

 

所有的集合接口和类都没有提供相应的遍历方法,而是把遍历交给迭代器 Iterator完成。Iterator为集合而生,专门实现集合的遍历

Collection 接口的 Iterator() 方法 返回一个 Iterator,然后通过 Iterator 接口的两个方法即可方便的实现遍历

Iterator  it  =   ×××.iterator();    //获取 Iterator  对象

1.boolean  hasNext();  判断是否存在另一个可访问的元素

2.Object  next();    返回要访问的下一个元素

 

 

 

增强for循环

 

for(元素类型   元素变量  : 数组或集合对象){

    

}

 

 

 

泛型集合

 

主要的好处还是从集合中取出时不需要强制类型转换,并且把非指定对象放入集合,会出现编译错误。在声明集合时就对这个集合所保存的参数进行控制

遍历时不需要强制类型转换

List <Dog>  dogs  =  new   ArrayList<Dog>();     Dog 就是泛型的类型参数,      可以设置多个

List <Dog,String>  dogs  =  new   ArrayList<Dog,String>();   

 

集合框架