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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 朱朱生 中级黑马   /  2015-9-2 22:04  /  600 人查看  /  8 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

1:集合体系
        集合
                |--Collection(单列)
                        |--List(有序,可重复)
                                |--ArrayList
                                        底层数据结构是数组,查询快,增删慢。
                                        线程不安全,效率高。
                                |--Vector
                                        底层数据结构是数组,查询快,增删慢。
                                        线程安全,效率低。
                                |--LinkedList       
                                        底层数据结构是链表,查询慢,增删快。
                                        线程不安全,效率高。
                        |--Set(无序,唯一)
                                |--HashSet
                                        底层数据结构是哈希表。
                                        线程不安全,效率高。

                                        怎么保证唯一性的呢?
                                        它依赖两个方法:hashCode()和equals()
                                        顺序:
                                                首先判断hashCode()值是否相同。
                                                同:继续走equals(),看返回值
                                                        如果true:就不添加到集合。
                                                        如果false:就添加到集合。
                                                不同:就添加到集合。
                                |--TreeSet
                                        底层数据结构是二叉树。
                                        线程不安全,效率高。

                                        怎么保证唯一性的呢?是根据返回是否是0。
                                        怎么保证排序的呢?两种方式
                                                自然排序(元素具备比较性)
                                                        实现Comparable接口
                                                比较器排序(集合具备比较性)
                                                        实现Comparator接口
                |--Map(双列 底层结构是针对键有效,跟值无关)
                        |--HashMap
                                底层数据结构是哈希表。
                                线程不安全,效率高。

                                怎么保证唯一性的呢?
                                它依赖两个方法:hashCode()和equals()
                                顺序:
                                        首先判断hashCode()值是否相同。
                                        同:继续走equals(),看返回值
                                                如果true:就不添加到集合。
                                                如果false:就添加到集合。
                                        不同:就添加到集合。
                        |--Hashtable
                                底层数据结构是哈希表。
                                线程安全,效率低。

                                怎么保证唯一性的呢?
                                它依赖两个方法:hashCode()和equals()
                                顺序:
                                        首先判断hashCode()值是否相同。
                                        同:继续走equals(),看返回值
                                                如果true:就不添加到集合。
                                                如果false:就添加到集合。
                                        不同:就添加到集合。
                        |--TreeMap
                                底层数据结构是二叉树。
                                线程不安全,效率高。

                                怎么保证唯一性的呢?是根据返回是否是0。
                                怎么保证排序的呢?两种方式
                                        自然排序(元素具备比较性)
                                                实现Comparable接口
                                        比较器排序(集合具备比较性)
                                                实现Comparator接口

2:应用。(添加功能,判断功能,删除功能,获取功能,长度功能)
        Collection
                add(Object obj)
                remove(Object obj)
                contains(Object obj)
                iterator()
                size()
               
                |--List
                        get(int index)
                        add(int index,Object obj)
                        remove(int index)
                        set(int index,Object obj)
                |--Set

        Map
                put(Object key,Object value)
                remove(Object key)
                containsKey(Object key)
                containsValue(Object value)
                size()
                get(Object key)
                keySet()
                values()

3:遍历方式
        List:
                迭代器(在源码中可以看到的,开发中也经常看到)
                增强for(开发中看到,JDK5以后用)
                普通for

                如果仅仅为了遍历,用任意一种即可。一般选择前两种的任意一种。
                如果要做修改,或者删除指定位置的元素,或者在指定位置添加元素。用普通for。
        Set:
                迭代器
                增强for

                任选一种。
        Map:
                键找值。

4:代码补齐:请对array,hs,hm进行遍历。
        A:
                ArrayList<String> array = new ArrayList<String>();

                方式1:
                Iterator<String> it = array.iterator();
                while(it.hasNext()){
                        String s = it.next();
                        System.out.println(s);
                }

                方式2:
                for(String s : array){
                        System.out.println(s);
                }

                方式3:
                for(int x=0; x<array.size(); x++){
                        String s = array.get(x);
                        System.out.println(s);
                }

        B:
                HashSet<String> hs = new HashSet<String>();
       
                方式1:
                Iterator<String> it = hs.iterator();
                while(it.hasNext()){
                        String s = it.next();
                        System.out.println(s);
                }

                方式2:
                for(String s : hs)
                {
                        System.out.println(s);
                }

        C:
                HashMap<String,Strting> hm = new HashMap<String,String>();       

                Set<String> set = hm.keySet();
                for(String key : set)
                {
                        String value = hm.get(key);
                        System.out.println(key+"***"+value);
                }

5:什么时候用谁?
        是否键值对?
                是:Map
                        是否对键排序?
                                是:TreeMap
                                否:HashMap
                        不懂的情况下,使用HashMap。

                否:Collection
                        是否唯一
                                是:Set
                                        是否对元素进行排序?
                                                是:TreeSet
                                                否:HashSet
                                        不懂的情况下,使用HashSet
                                否:List
                                        是否要安全:
                                                是:Vector(真正开发中也不用)
                                                        List list = Collections.synchronizedList(new ArrayList());

                                                否:ArrayList,LinkedList
                                                        查询多:ArrayList
                                                        增删多:LinkedList
                                        不懂的情况下,使用ArrayList

8 个回复

倒序浏览
说的好全面 真 的只有Map集合
回复 使用道具 举报
收藏起来备用
回复 使用道具 举报
不错的总结
回复 使用道具 举报
很不错的总结
回复 使用道具 举报
好东西,先看看
回复 使用道具 举报
这么全面的总结。。
回复 使用道具 举报
没学到  先看看         
回复 使用道具 举报
好多。。。。但没有具体代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马