黑马程序员-集合类

---------------------- android培训java培训、期待与您交流! ----------------------

                                                        一   集合类

  一,  集合的概述:所谓集合,就是存储对象最常用的一种方式。

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

      2。数组和集合类的不同

            数组虽然可以存储对象,但是长度固定,集合长度是可以变得。数组中可以存储基本数据类型,集合只存储对象。

  二。共性方法。

       1.添加元素    对象名.add(Objcte obj);

       2.删除元素    对象名.remove(需要删除的元素);         对象名.clear(); 清空集合

       3.获取个数集合长度     对象名.size();

       4.判断元素是否存在     对象名.contais();

       5.取交集      对象1.retainAll(对象2);         对象1只会保留对象2中相同的元素

       (add方法的参考类型是object.以便于接受任意类型对象。集合中存储的都是对象的引用)。

       6.Interator  迭代器

        Iterator是一个接口,获取迭代器,用于取出集合中的元素。迭代器就是集合的取出元素的方式。语法:

                         Ierator    int =对象名。iterator();

                           while(it.hasNext()         用于判断

                           System.out.println(it.next());

                                                        二  list

  一。list的特有方法。

     list:元素是有序的,元素可以重复,因为该集合体系有索引。凡是可以操作角标的方法,都是该体系特有方法。

     增:add(index.elements);   指定位置添加元素。

     删:remove(index):    删除指定位置上的元素。

     该:set(index.elements);    修改指定角标位置上的元素。

     获:get(index);    通过角标获取元素。

  二。list Iterator

     list Iterator是list集合特有的迭代器,list  Iterator是Iterator的子接口。在迭代是,不可以通过集合对象的方法操作集合中的元素,因为会发生异常。所以在迭代是,只能有迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作,如果想要其他操作如添加,修改等,就需要用其子接口list Iterator,该接口只能通过list集合list Iterator方法获取。

       list集合ListIterator方法获取:

                                                 对象名。previous                     对象名。hasprevious

  三。list集合具体对象特点。

     1.ArrayList:底层使用数组结构。特点:查询速度快,但是增,删稍慢(线程不同步)。

     2Linkedlist:底层使用链接表数据结构。特点:增,删速度快,查询速度稍慢。

     3.vector:底层是数组数据结构,(线程同步)被Arraylist代替了,支持枚举,但是被迭代器代替。

  注意:在迭代时,循环中,nest调用一次,就需要hasNest判断一次

                                                                  三 set

  一。set:元素无序,(存入取出的顺序不一致)元素不可重复。set集合的功能和collection一致。

     1常见子类:

                     hashset:底层数据结构结果是哈希表,线程同步。

                     Treeset:可以对set集合中的元素进行排序。

     2.hashset如何保证元素的唯一性。

     通过元素的两个方法,hashCode和equals来完成。如果元素的hashCode值相同,才会判断equals是否为true。如果不相同,就不会调用equals方法。

     注意;对于判断元素是否存在,以及删除等操作,依赖的方法元素hashCode和equals方法。

  二。treeset

     底层数据结构是二叉树,保持了元素的唯一性的依据是compare方法retain。

     1.treeset排序的第一种方式:让元素自身具备比较性,元素需要实现compareble接口,覆盖compareTo方法,这种方式也成为元素的

     自然顺序或者叫做默认顺序。

     2.Treeset排序的第二种方式:当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时就要让集合自身具备比较性。

         (在集合初始化时,就有了比较方式,通过构造函数)。

     3.定义了比较器,将比较强对象作为参数传递给Treeset集合的构造函数,当两中排序都存在是,以比较器为主。

                                                                          四 泛型

  一。java1.5之后出现的新特性,用于解决安全问题,一个安全机制。

     1。好处:将运行时期出现问题转移到编译时期,方便了程序解决安全问题,让运行时间减少,安全。

                     避免了强制转换的麻烦。

     2.格式:通过<>来定义要操作的引用数据类型。其实<>就是用来接收类型的。当使用集合时,将集合中要存储的数据类型作为参数

                 传递即可。

     3。泛型类:当类中要操作的引用数据类型不确定的时候,早就定义object来完成扩展,现在定义泛型来完成扩展。语法:

                         class Util<QQ>

                           {

                                     private QQ q;

                                     public  void  setObject(QQ q)

                                     {

                                            this.q-q;

                                       }

                                       public QQ  getObejct()

                                      {

                                             return q;

                                       }

                          }

     4.泛型方法。

      泛型类定义的泛型,在整个类中有效,如果被方法使用,那么泛型类的对象明确要操作的同体系后,所有的操作类型已经固定了,为

      了不让同方法可以操作不同类型,而且类型还不确定,那么可以讲泛型定义在方法上。

      (静态方法不可以访问类上定义的泛型。如果静态方法作用引用数据类型不确定,可以将泛型定义在方法上)

                                                                五 集合map

  一,集合map:该集合存储值对,一对一对往里存,而且保证键的唯一性。

  二。map集合共性方法。

     1.添加(如果出现添加时,相同的键,那么后添加的值会覆盖原有键对应值,并put方法返回被覆盖的值)

       put (K   key, V  value);

       putAll(map<?extends k,?extends v> m);

     2。删除

      clear();

      remove(object key);

     3.判断。

      containsValue(Object    value);

      comtainsKey(Object    key);

       isEmpry();

     4.获取

      get(Object    key);

      size();

      values(); 获取map集合中所有的值。

     entryset():将map集合中的映射关系存入到set集合中,这个关系的数据类型就是:map.Entry。

     keyset();将map中所有的键存入set集合中,因为set具备迭代器,所有就可以迭代方式取出所有值,在根据get方法获取对应值。

  三,map集合子类

      1.Hashtable:实现哈希表数据结构,不可以存入Null键,Null值(线程同步);

      2Hashmap:底层是哈希表数据结构,允许使用Null键Null值(线程不同步)。

      3Treemap:底层是二叉树数据结构,线程不同步,用于给map集合键排序。

---------------------- android培训java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值