Java集合框架

1.  Java集合类概述

A.集合的由来

   a. 处理多个相同数据我们采用数组,但数组空间固定不能动态增长,插入或删除元素比较麻烦。我们使用集合来解决这个问题

   b. 集合特点:元素类型可以不同、集合长度可变、空间不固定

   c. Java中对一些数据结构和算法进行了封装即集合。集合也是一种对象,用于存储、检索、和传输对象

   d. JCF(Java Collections Framework)集合框架。它提供了用于管理集合的接口和类

B.Java集合框架中的三个核心接口:Set、List、Map
 
2.Collection接口和Iterator接口

A.  集合(Collection)接口位于Set接口和List接口的最顶层,是Set接口和List接口的父接口。定义了Collection对象共有的一些基本方法,这些方法分为基本操作、批量操作和数组操作

B.  Iterator接口是一种用于遍历集合的接口。所谓遍历,是指从集合中取出每一个元素的过程

3. List接口:一列数据,数据内容可以重复,以元素安插的次序来放置元素,不会重新排列

A.  List接口的实现类具有共同的方法:

  add() :向集合中添加元素(增)

  remove() :将元素从集合中移除(删)

  get() : 从集合中获取元素(查)

  set():修改集合中的元素(改)

  size() :查看集合长度 

B.List接口实现类的选择

   a.  ArrayList:使用最广泛,集合元素增加或删除操作不频繁时使用。最适合查询

   b.  LinkedList:当需要在集合的中间位置,频繁增加或删除元素时使用

   c.  Vector:与ArrayList类似,但Vector是线程安全的,所以性能要低于ArrayList

4.  泛型:由于集合中保存的元素都是Object类型,当一个元素从集合中取出来后都是Object类型的对象,所以我们必须对其进行强制类型转换。为了解决这种麻烦,JDK1.5中提供了一种新的处理方式泛型。

   如:List<String> list = new ArrayList<String>();

5. for each循环

在JDK1.5中增加了一种新型的循环,称之为for each循环,该循环大大简化了对于集合的遍历操作

     如:for(String a : list){

    System.out.println(a);

            }

6. Set接口:一列数据,数据内容不能重复,使用自己内部的一个排列机制放置元素

A.  Set接口的实现类具有共同的方法:

  add() :向集合中添加元素(增)

            remove(Object o) :将元素从集合中移除(删)

  size():查看集合长度

B.Set接口实现类的选择

   a.  HashSet:速度快,不排序

   b.  TreeSet:速度慢,排序

7.  Map接口:一列数据对,使用自己内部的一个排列机制放置元素

A.  Map接口不是Collection接口的继承。Map接口用于维护键/值对(key/value pairs)。每个条目包括单独的两部分 :

         key

         Value

B.  在Map中不允许出现重复的键.

C.key 和 value 可以是任何类的实例
D.Map接口实现类的共同方法

  put():将键值对存入集合

  get():根据键取出元素的值

  keySet():将Map中的所有键取出形成一个Set

  values():将Map中的所有值取出形成一Collection

  remove():根据键移除值

E.Map接口实现类的选择

   a.  HashMap:速度快,不排序

   b.  TreeMap:速度慢,排序

8.工具类Collections和Arrays

A.  Java集合框架中提供了一个操作Set、List和Map等集合的工具类Collections,该工具类中提供了大量方法,用于对集合元素进行排序、查询、修改等操作

B.  Java集合框架同时也提供了Arrays类用于操作数组。Arrays类包含用来操作数组(比如排序和搜索)的各种方法

9. 古老的集合类与接口

A.  Vector、Hashtable、Stack、Properties类以及遍历器Enumeration接口

B.  Vector(向量)与ArrayList的用法几乎完全相同,二者之间的最大区别在于Vector类是线程安全的,而ArrayList不是

C.  Hashtable与HashMap的用法也几乎相同,二者的关系完全类似于Vector与ArrayList的关系。Hashtable是线程安全的,而HashMap不是。 此外,Hashtable不允许key和value为null,而HashMap是允许的

D.  Properties到现在还被频繁使用的一个类。该类用于处理属性文件。所谓属性文件就是将Map形式的键/值对数据存在一个扩展名为“.properties”的文本文件中,常用作软件的配置文件

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。