A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

集合
1,集合与数组的区别
        a,数组元素既可以是基本类型,也可以是对象;
           集合元素只能是对象。
        b,数组长度固定;集合长度不固定;
        c,数组只能存同一类型的元素;集合可以存不同类型的元素。
2,集合体系:
        1)单列集合体系
        Collection(接口)
                |-----List(接口)元素有序,可重复
                        |-----ArrayList
                        |-----Vector
                        |-----LinkedList
                |------Set(接口)元素无序,且唯一
                        |-----HashSet
                        |-----TreeSet
        2)双列集合体系
        MAP(接口)
                |------HashMap
                |------TreeMap
        注:元素有序无序是指,存入和取出的顺序是否一致。
3,Collection接口
        1)是List、Set和Queue接口的接口
        2)相关方法
                A,添加功能:
                        add() 向集合中添加一个元素
                        addAll()向集合中添加一个集合的元素
                B,删除功能:
                        remove()删除集合中指定的元素
                        removeAll删除集合中指定的一个集合的元素
                        clear()清除本集合中的所有的元素
                C,判断功能:
                        contains()判断集合中是否存在目标元素
                        containsAll()判断集合中是否存在指定集合中所有元素
                        isEmpty()判断集合是否为空
                D,长度功能:
                        size()获取集合中元素的个数
                E,遍历功能:
                        iterator()获取集合中每一个元素
4,Iterator接口
        1)作用:
                遍历(迭代访问)Collection集合中的元素
        2)三个方法:
                boolean hashNext()如果被迭代的集合元素还没有被遍历,返回true;
                Object next()返回集合中下一个元素
                void remove()删除集合里上一次next方法返回的元素
        3)当使用Iterator迭代访问Collection集合元素时,Collection集合里的元素不能被改变。
5,Set集合
        1)不允许包含相同的元素
6,HashSet类
        1)特点
        a,不能保证元素的排列顺序,顺序可能发生变化;
        b,HashSet不是同步的,如果多个线程同时访问一个HashSet,且同时修改HashSet集合时,必须通过代码来保证其同步
        c,集合元素可以是null值
        2)HashSet集合判断两个元素相等的标准
        两个对象通过equals()方法比较相等,并且两个对象的hashCode()方法返回值也相等。
        3)重写hashCode()方法的基本规则
        a,在程序运行过程中,同一个对象多次调用hashCode()方法应该返回相同值;
        b,当两个对象通过equals()方法比较,返回true时,这两个对象的hashCode()方法应返回相等的值
        c,对象中用作equals()方法比较的标准的Field,都应该用来计算hashCode值
7,LinkedHashSet类
        1)使用链表维护元素的次序,故元素很像以插入顺序保存。
8,TreeSet类
        1)是SortSet接口的实现类,确保集合元素处于排列状态
        2)向TreeSet中添加对象,应该是同一个类的对象。
        3)两种排序方法:
                A,自然排序,实现Comparable接口中的compareTo方法
                eg:obj1.compareTo(obj2)
                        返回0,这两个对象相等;
                        返回正整数,obj1>obj2;
                        返回负整数,obj1<obj2;
                B,定制排序,需要在创建TreeSet集合对象是,提供一个Comparator对象与该集合相关联。
                                其中包含一个int compare(Object obj1,Object obj2)方法
                eg: compare(obj1,obj2)
                        返回0,obj1 = obj2;
                        返回正整数,obj1>obj2;
                        返回负整数,obj1<obj2;
9,List集合
        1)代表一个元素有序、可重复的集合。
        2)List提供的listIterator方法,具体用法,详见api
10,ArrayList和Vector实现类
        在向ArrayList或者Vector集合中添加大量元素时,可以使用ensureCapacity(int minCapacity)方法一次性增加initialCapacity,这样可以减少分配次数,提高性能。
11,固定长度的List
        通过Arrays.asList()方法生成的list集合,该集合的长度固定,不能增加和删除集合的元素。
12,从线程安全的角度思考
        不安全的有:HashSet、TreeSet、ArrayList、LinkedList
        安全的有:vector
13,使用List集合建议
        1)遍历元素
                ArrayList:Vector随机访问方法(get);LinkedList;采用迭代器(Iterator)遍历
        2)对于经常执行插入、删除操作改变List集合的大小的情况,应使用LinkedList集合。
        3)若多个线程需要同时访问List集合中的元素,可以考虑使用Collections将集合包装成线程安全的集合。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马