第十四天:集合框架

  1. 为什么要出现这么多的容器呢?

因为每一个容器对数据的存储方式(数据结构)都不相同,

  1. 为什么出现集合类?

面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最长用的一种方式。

  1. 数组和集合类都是容器,有什么不同?

数组的长度是固定的,容器的长度是可变的。

数组中可以存储基本数据类型,集合只能存储对象

  1. 集合类的特点

集合只用于存储对象,集合的长度是可变的,集合可以存储不同类型的对象。

  1. Collection 接口的几个子接口

List(列表):可以存放重复的元素,元素存取的有序的

Set(集):不可以存放重复的元素,元素存取是无序的

Vector:线程安全,但速度慢,已被arraylist取代

Arraylist:线程不安全,查询速度快

Linkiedlist:链表结构,增删速度快。

Hashset :线程不安全,存取速度快。

        思考:他是如何保证元素的唯一性的呢?

                      通过equals方法和hashcode方法来保证元素的唯一性

TreeSet:线程不安全,可以对set集合中的元素进行排序

        思考:他的排序是如何进行的?

通过compareTo或者compare 方法中的来保证元素的唯一性。元素是以二叉树的形式存 放的。

       Hashtable:线程安全,速度慢,不允许存放null值,已被hashmap取代

       Treemap:对键进行排序,排序原理与treeset相同

  1. 取出list集合中的元素的方式:

Get(int index):通过脚标获取元素

Iterator():通过迭代的方法获取迭代对象

  1. 迭代

迭代式取出集合中元素的一种方式

因为collection中有iterator方法,所以每一个子类集合对象都具备迭代器。

用法:

ArrayList al= new ArrayList();

           al.add("name12");

           al.add("name12");

           al.add("name12");

           al.add("name12");

           al.add("name12");

          

           //使用方法1

           for(Iterator iter =al.iterator();iter.hasNext();)

           {

                 System.out.print(iter.next()+"**");

           }

           System.out.println();

          

           //使用方法二

           Iterator iter = al.iterator();        

           while(iter.hasNext())

           {

                 System.out.print(iter.next());

      }

  1. 迭代注意事项

迭代器在collection接口中是通用的,他替代了vector类中的Enumeration(枚举)。

迭代器的next方法是自动向下取元素,要避免出现NosuchElementException

迭代器的next方法返回值类型是object,所以要记得类型转换

  1. 思考:为什么next方法的返回值是Object类型呢?
  2. 泛型的特点

提高了程序的安全性

将运行期遇到的问题转移到了编译期

省去了类型强转的麻烦

泛型类的出现优化了程序设计

  1. Map与collection在集合框架中属于并列存在的
  2. Map存储的是键值对
  3. Map存储元素使用put方法,collection使用add方法
  4. Map集合没有直接取出元素的方法,而是先转成set集合,再通过迭代获取元素
  5. Map集合中键要保证唯一性
  6. 集合框架中的工具类

Collection:

对集合进行查找

取出集合中的最大值,最小值

对list集合进行排序

       Arrays

              将数组转成list集合

              对数组进行排序

              对数组进行二分查找

  1. Collection在jdk1.5后现的父接口iterator就是提供了这个for语句

格式:

For(数据类型 变量名:数组或集合)

{

        执行语句;

}

简化了对数组,集合的遍历

  1. 函数的另一种表现形式:

返回值类型 函数名(参数类型… 形式参数)

{

              执行语句;

}

其实接收的就是一个数组,可以指定实际参数的个数

  1.  

 

posted on 2018-03-04 16:00  song.yan  阅读(169)  评论(0编辑  收藏  举报