黑马程序员_Java基础_集合框架

来源:互联网 发布:英国大学用哪种gpa算法 编辑:程序博客网 时间:2024/04/26 03:59

----------Android、Java开发期待与您交流----------


为什么会出现集合类?

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

数组和集合类同是容器,有何不同?
    数组可以存储对象,但长度是固定的;集合长度是可变的。
    数组中可以存储基本数据类型,集合只能存储对象

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

常用的集合
    List、Set、Map是这个集合体系中最主要的三个接口。
    其中List和Set父接口为java.util.Collection
    一.ArrayList和LinkedList父接口为java.util.List,此接口实现类中存储的元素允许重复出现
        1.ArrayList用数组结构实现,LinkedList用链表结构实现
        2.查询列表使用ArrayList速度快,多列表添加或删除元素频繁,使用LinkedList效率高
        3.允许列表元素为全部null
        4.两个实现类均不同步,当多个线程同时访问而且至少有一个线程修改了集合那么它必须外部      同步或者采用实现了同步的Vector替代

二.java.util.Set接口
    一个不包含重复元素的Collection,即任意的两个非空元素,e1.equals.(e2)=false(hashcode也需要不同);元素中最多包含一个null
    HashSet和TreeSet为两个实Set接口的现类,SortedSet为子接口
    HashSet使用散列表数据结构实现
    TreeSet为SortedSet的实现类,采用红黑树数据结构对元素排序,分自然排序和定制排序,默认情况下是自然排序
        1.不能保证元素的排列顺序,顺序可能发生变化
        2.HashSet和TreeSet是不是同步的,多线程同时访问,而其中至少一个线程修改了Set,那么要通过代码实现同步
    尝试把一个对象添加到TreeSet中时,该对象的类必须实现Comparable接口,否则会出现异常;在添加第二个元素时,会调用TreeSet会调用该对象的compareTo(Object obj)方法时会出现异常,而且向T
reeSet添加的对象应该属于同一个类的对象,否则也会引发异常
        
Map接口
    一个以键(key)-值(value)对存放数据的容器,一个唯一的key可以对应相同的value
    已知的实现类有HashMap(散列表)、TreeMap(红黑树)、HashTable(散列表)……
    HashMap和TreeMap
        1.HashMap中允许为null的键值,而且元素没有顺序
        2.TreeMap中的元素根据其键的自然顺序进行排序
        3.在Map中插入、删除元素HashMap效率高,但要多Map进行自然排序或自定义排序选择TreeMap    更合适

    HashMap和HashTable
        1.HashTable不允许null的键或值出现
        2.HashTable线程同步
        
   

----------Android、Java开发期待与您交流----------
0 0