博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础--集合Connection/Map
阅读量:6972 次
发布时间:2019-06-27

本文共 2318 字,大约阅读时间需要 7 分钟。

hot3.png

参考文章:http://blog.sina.com.cn/s/blog_9b7559130100z1f4.html

一:为什么会出现集合框架

        由来:早期是没有集合框架这一说的,因为当时有数组就可以了。但是随着Java的发展与市场的不断需

        求,就出现了集合框架,比如数组时存储基本数据类型的,当然也可以存储自定义类型,但是其长度必

        须是固定的,查询删除修改元素的时候,都必须通过角标。这就很不方便,为什么呢?因为你通过角操

        作数据,那么你怎么记着每个具体元素对应的角标呢?比如一个数组中有{d,b,t,g},等过段时间后,

        你怎么知道t在数组中的那个问题呢?

        所以Java在早期就出现了原始的集合Vector,由于早期注重的是安全,所以其为线程安全的。但是随着

        市场需求的不断增多,效率就成了社会的主流,这时Vector就不能满足需求,就需要有新的效率高的集

        合来代替。这就出现了集合框架,根据面向对象的思想,不可能让一个集合具有所有的优点,因为这不

        现实。 所以就出现了多个不同的集合,这些不同的集合都有各自的特点,但又有共同的方面,所以为

        了让他们有归宿并且形成体系,就把他们共性的方面给抽取出来,形成他们的父类,让特征不同的集合

        继承,这样就有了集合框架。

二:集合框架与数组的区别:
      1:最大的区别集合框架存储的是引用数据类型,不能是基本数据类型
      2:集合的长度是可变的,数组的是不可变的
三:集合框架的体系结构

                                     Collection

   
                      List                Vector              Set

           ArrayList       LinkedList                  HashSet      TreeSet

                           LinkedHashSet
 

四:看体系的方法:

     要看一个体系,首先要看的就是他们的最底层,所以我们先看框架集合的祖宗Collection。。。。。。

   1:Collection有什么特点

       规律一:凡是祖宗一般其必为接口,遗憾的是Collection没有逃脱这个规律,它也是接口。那么接下来

               我们就要看这个接口(对象)

   其特点
        1:长度可变(说明是数组)
        2:元素可以重复(所以有角标),因此第三点可以不说
        3:元素有角标
   有哪些行为呢?
       一个类(对象)中无非要么是方法(功能),要么是属性,要么是二者都有。遗憾的是Collection只有

      功能(方法),所以接下来看看它有

   什么具体方法?
      一个对象所具有的方法不过以下四类:增删改查
 1:增:
     所以我们先看Collection的增加的方法,试想如果是自己定义,参数是什么,返回值是什么?
     如果是我定义的,肯定需要参数,没有返回值。这是我初次的想法,但是如果添加不成功怎么办?所以之

     前的想法是错的,必须有返回值但是返回值是什么类型的好呢?试想,如果是int型的,添加成功返回1,

     不成功返回0,这可以。但是有另一种更加好的返回类型,boolean型,成功返回true,不成功返回false,

     这也可以。

     但为什么比int型更好呢?
     因为我们有时候不必写返回值true与false,比如 return a>b;如果成功,自己就可以返回true但是如果返

     回的是int型,就需如下

        if(a>b) return 1;
        else 0;
     这样写不但代码繁琐而且格式不优美,所以其add方法如下
       boolean add(E e);//添加单个元素到集合中
      boolean add(Collection<? extends T> c)//把一个集合中的元素添加到另外一个集合中
  2:删
     删除集合中的元素:
     以为Collection补充了数组的不足,删除元素通过对象,而不是角标返回值为boolean
     boolean remove(Object o);
     boolean revoveAll(Collection<? extends T> c);//查找并移除集合中相同的元素
     void clear();
  3:查:
     boolean contains(Object o)//元素是否包含在指定集合中
     boolean contionsAll(Collection<? extends T> c);//参数集合是否包含的指定集合中
     boolean isEmpty();//集合是否为空
     boolean retaionAll(Collection<? extends T> c);//查找并保留相同的元素
  4:取
    如何的把集合中的元素全部的取出来,是非常重要的一个方面,但是Collection也为我们提供好了功能
    其参数是什么呢?因为是取集合自身的元素,所以没有参数。
    但是返回值类型是什么呢?
    因为每个子类的特点不一样,所以他们存储的数据也是不一样的,所以导致他们的取出方式更是不一样,
    所以返回的应该是怎么去元素的那个对象,即迭代器Iterator iterator()
  5:其它功能
    由于数组胡集合有很多的相识型,所以集合就产生一个将集合转为数据的方法返回值理应为Object型的数

    组,不想要参数,因为涉及到的只是自己在转变,如何转只有自己知道,所以无参 Object[] toArray();

    但是总是返回Object型的数组总是不舒服的,因为有时候我们知道具体的返回值类型,所以方法如下
    T[] toArray(T[] a);
   注意:
    在参数中可以指定数组的长度也可以不指定,如果指定的数组大小小于集合中的元素个数,则会重新创建一

    个默认的能装下集合元素的数组

    如果指定的数组大了,则多余的用null填充,
    所以最好的是指定一个与集合元素个数相同的数

转载于:https://my.oschina.net/u/1765238/blog/289373

你可能感兴趣的文章
简易登录,批量执行命令,批量copy文件shell脚本【Linux运维之道之脚本案例】...
查看>>
一个有关神之数字的小题
查看>>
Linux下,Redis(四)Redis数据持久化
查看>>
我的友情链接
查看>>
柔性事务必备条件---接口幂等性
查看>>
Python编程快速上手让繁琐工作自动化 第十二章实践项目12.13.3 电子表格单元格翻转程序...
查看>>
关于nginx优先级问题
查看>>
Jpchina博客
查看>>
使用手机作单反相机的遥控器
查看>>
RPC的应用:Apache thrift的ubuntu 14.04的安装与应用
查看>>
Lync 号码处理案例分析
查看>>
Django开发中常用的命令总结
查看>>
邮件服务器的搭建
查看>>
综合技术--解决Intellij IDEA创建maven项目过慢的问题
查看>>
android开源项目框架大全:
查看>>
Bootstrap3.0 栅格系统背后的精妙魔法(Bootstrap3.0的栅格布局系统实现原理)
查看>>
finally的用法,拦截器是Struts2的核心,异常处理
查看>>
解决linux系统CentOS下调整home和根分区大小
查看>>
PHP基础教程 常见PHP错误类型及屏蔽方法
查看>>
11.16
查看>>