详谈集合

来源:互联网 发布:lua5.3.4 for windows 编辑:程序博客网 时间:2024/05/29 14:09

2011-6-20  JSP正式开课

第二章  用集合存储对象

 

本章新单词:

collection 集合              key  

value  值                    stack  堆栈

queue      队列                contain  包含,包容

 

集合(collection)是存储多个元素的容器

集合用于存储检索、和操纵数据

Java的集合也被称为“容器类”;

一、Collection接口

Collection 接口存储一组不唯一无序的对象。

(1、)List 接口存储一组唯一有序(插入顺序)的对象。

    List集合代表一个有序的集合、允许存在重复的元素、并可以存放null值。

   1、ArrayList类是基于数组实现的List类。  实现了可变长度的数组,在内存中分配连续的空间。

      随机访问集合元素的性能较好。(按索引访问)删除的性能不高

   2、LinkedList类是基于链表实现的List类。

      LinkedList是一个双链表的实现。

      LinkedList不是一个直接访问的数据结构。

      LinkedList插入删除元素时的性能非常出色。(顺序访问)

(2、)Set 接口存储一组唯一无序的对象。

   set集合不允许包含相同的元素。

   1、HastSet集合:元素是无序排列的,HashSet类是非线程安全的。允许集合元素是null。

          当像HashSet集合中添加元素时,会调用该元素的HashCode()方法得到hashcode()方法得到hashcode值,通过hashCode值决定元素的存储位置

          hashcode()方法的作用如下。

           为HashCode集合中的元素提供索引

          可以提高hashset集合查找元素的效率

   2、TreeSet类

       TreeSet类是SortedSet接口的实现类,它的集合元素是有序排列的。

      常用方法:

 

方法说明E Ceiling(E e)返回当前set集合中大于等于给定元素的最小元素,如果不存在这样的元素,返回nullE floor(E e)返回当前set集合中小于等于给定元素的最大元素,如果不存在这样的元素,返回null

SortSet<E> subSet

(E fromElement,E toElement)

返回当前set集合的部分视图,其元素范围从fromElement(包括)到toElement(不包括)

比较HashSet类和TreeSet类

HashSet类在添加及查找元素时效率比TreeSet类高。

TreeSet类由于在保存元素时会对元素进行排序,因而时间较慢

当需要对元素进行排序时才使用TreeSet类,否则建议使用HashSet类。

集合的遍历:

    (3、)Iterator接口的作用主要是遍历Collection集合中的元素。

    常用方法:boolean hasNext();   //判断迭代器是否有元素

             next();     //返回迭代器的下一个元素

             void remove();    //将迭代器返回的最后一个元素删除

    二、Map接口

     存储一组键值对象,提供key到value的映射

1、HashMap类

   HashMap类是基于哈希表实现的Map类,HashMap集合的元素是无序排列的。

2、TreeMap类

   TreeMap类是基于一个平衡二叉树实现的Map类,TreeMap集合可以对集合中的键进行排序,从而保证元素有序排列

HashMap类和TreeMap类的比较

  HashMap适用于在Map中插入、删除和定位元素

  TreeMap适用于按顺序对集合元素进行遍历

Eg:

   Map<String,String> stuMap = newHashMap<String,String>();

   stuMap.put("小艾","小艾的耳朵");    //添加值

   Set<String> stuSet =stuMap.KeySet();     //键的集合

    for(Stringstu :stuSet){          //遍历每一个键值

       System.Out.Println(stuMap.get(stu));   //根据键值获取value值

  

三、排序

Connection.sort(stuList,newComparator<Student>(){

  public intcimpare(Student num0 , Student num1){

     //return num0.getStuId -num1.getStuId;   //int类型的比较

     returnnum0.getStuName.compareTo(num1.getStuName); //String类型的比较

  }

});

   四、List接口中定义的各种常用方法。

   返回类型       方法                               说明

   boolean    add(Object o)   在列表的末尾添加元素,起始位置的索引从0开始

   Object     get(intindex)    返回指定索引位置处的元素

   int         size()           返回列表中的元素个数

   void       add(int index,Object o) 在指定的索引位置添加元素

   boolean     remove(Objecto)   从列表中删除元素

   boolean    remove(int index) 从列表中删除指定位置元素,起始索引位置从0开始      

    Object      contains(value)   查询元素是否存在

   boolean    clear()         删除全部数据

   五、LinkedList的一些特殊方法

   返回类型       方法               说明

   void         addFirst(Object o)  在列表的首部添加元素

   void         addLast(Object o)   在列表的末部添加元素

   Object        getFirst()          返回列表中的第一个元素

   Object       getLast()           返回列表中的最后一个元素

   Object       removedFirst()    删除并返回列表中的第一个元素

   Object       removeLast()      删除并返回列表中的最后一个元素

   六、HashMap的一些特殊方法

   方法                      说明

    Objectput(Object key,Objetcvalue)           添加元素

    Objectget(Objectkey)        根据key值获取元素(即,得到vlaue值),如果不存在指定的键,返回null

    Objectremove(Objectkey)       删除由指定的键映射的“键-值对”

    intsize()                      返回元素个数

   Set keySet()                    返回键的集合

    Collectionvalues()             返回值的集合

    booleancontainsKey(Objectkey)  如果存在由指定的键映射的“键-值对”,返回true

   

C#中

  HashTable 哈希表

 添加元素       add(key,value)

  值得类型为Object类型,所以当得到一个值时需要类型转换

 删除元素       Remove()通过key值删除

 删除所有元素   clear()

 

Collection和Collections的区别

Collection是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法。

Collections是一个包装类,它包含有各种有关集合操作的静态多态方法,此类不能被实例化。

   是针对集合类的一个帮助类 ,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

 

 

0 0
原创粉丝点击