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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冷延冰 中级黑马   /  2013-1-24 13:31  /  1436 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

集合,常用的接口,Collection,List Set,SortedSet,Map,SortedMap
用来管理/容纳多个对象的对象(或称为容器);
面向对象可重用性的体现,对数组作了功能封装。
Collection是一个接口:是以对象为单位来管理元素的。
        基本操作:add  remove  size,
        遍历:迭代遍历
有两个子接口:List接口和Set接口
1,List接口:元素是有顺序(下标),可以重复。有点像数组。可以用迭代器(Iterator)和数组遍历集合。
        List接口里本身有自己的方法,还有从父接口Collection里继承的方法。
        remove(int)删除某一位置的对象、add(int,Object)往某一位置插入对象 、get(int)查询某一位置上的元素。
        遍历:迭代遍历、for遍历
        Collections.sort(list); 引入list集合然后对list集合里的对象(如:Student类)进行排序时,
        只要在让对象(类)实现Comparable接口,再覆盖接口里面的方法(compareTo()方法),
        在compareTo()方法里写出进行什么样的方式排序,
      Public int compareTo(Object o){
         Work w=(Work)o;
       If(this.salary!=w.salary){return (int)w.salary-(int)this.salary;}
       Else If(this.age!=w.age){return w.age-this.age;}else  retuen this.name.compareTo(w.name);sss
}
        然后在主函数里使用Collections.sort(list);  ,就对list里的对象进行排序了,
        而不用管Collections.sort()方法是怎么实现的,既不用管Collections.sort()方法的实现体。
        排序规则:对象实现Comparable接口,覆盖compareTo()方法,Collections.sort(List);
       
1)ArrayList 集合类实现List接口,轻量级,底层是以数组实现的,查询快,增删慢,线程不安全,用get(int)方法多时,
Vector集合也实现List接口,底层也是以数组实现的。但这个类已经放弃了。重量级,查询慢,增删快,线程安全。(Vector和HashTable是线程同步的(synchronized),所以线程安全。性能上,ArrayList和HashMap分别比Vector和Hashtable要好。)
2)LinkedList集合类实现List接口,他底层是以链表实现的,查询慢,增删快,
                用remove(int)、add(int,Object)方法多时,
                自己实现栈(stack),并对栈里进行增删操作。
                class MyStack{
                        private LinkedList list=new LinkedList();
                        public void push(Object o){
                                list.addFirst(o);
                        }
                        public void pop(Object o){
                                list.removeFirst();}}
2,Set接口:无顺序,不可以重复(内容不重复,而非地址不重复)。只能用迭代器(Iterator)遍历集合。
        Set接口里本身无方法,方法都是从父接口Collection里继承的,
        遍历:迭代遍历
        实现类:保证元素内容不重复。
1)HashSet集合类实现Set接口,底层是以数组实现的。HashSet集合里不允许有重复对象
        每向HashSet集合类里添加一个对象时,先使用HashSet集合类里add(o)方法,
        再调用对象o的hashCode()方法算出哈稀码,保证相同对象返回相同的哈希码。
        如果哈稀码一样,再调用对象o里的equals()方法对对象的属性进行比较是否相等,
集合也可以构造集合,如:List<Object> list=new ArrayList<Object>(); Set<Object> set=new HashSet<Object>(list);原来在list集合里的对象是可以重复的,但被set集合构造之后,重复的对象将被去掉
按这三种顺序来理解接口:        1)接口特点;2)接口常见操作(方法);3)接口实现类的特点
Map:对应一个键对象和一个值对象,可以根据key找value,
        (Key--value)不可重复且无序--可重复
        排序(SortedMap是Map的子接口):TreeMap类实现SortedMap接口;对集合进行排序。
        基本操作:put()        get()
        遍历:键遍历  ketSet()返回键的集合(Set)(说明map的键是用set实现的,不能重复)
                   值遍历 values() 返回值的集合。
        HashMap类实现Map接口:        查询快,线程不安全,允许键和值对象为null
        Hashtable类实现Map接口:查询慢,线程安全
        TreeMap类实现Map接口:SortedMap的实现类,自动对键进行排序。

评分

参与人数 1黑马币 +15 收起 理由
冯海霞 + 15

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马