集合Conllection的基本概念:
1、集合的基本认识:如StringBuffer&StringBuilder是集合(存储的对象类型是String)。数组、对象与其很相似,但是还有区别。
2、集合的由来:对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就需要使用集合来进行存储。
3、集合的特点:
    (1)用于存储对象的容器;即集合中存储的元素是对象
    (2)集合的长度是可变的;
    (3)集合是不可以存储基本数据类型的;(集合存储基本数据类型时会先进行自动封装成其对应的对象后再进行存储)
4、集合框架体系:
    集合是用于存储对象的容器。而每种容器内部都有其独特的数据结构,正因为不同的容器内部数据结构不同,使其各自有自己独特的使用场景。虽然每个
容器有其独特的结构但是类似的容器还是存在共性的(至少对容器内部对象的操作方法上是存在共性的),所以这些共性方法能被不断抽取,最终形成了集合框架体系。

5、集合框架的顶层接口(根接口):Collection  
    Collection的常见方法:
    (1)添加
        boolean add(E o);
        boolean add(Collection<? extends E> c);
    (2)删除
        boolean remove(Object o);
        boolean removeAll(Collection<? extends E> c)
        void clear();
    (3)判断  
        a.判断集合中是否有元素:boolean isEmpty();
        b.判断集合中是否包含某个元素:boolean contains(Object o);
        c.判断集合中是否包含某些元素:boolean contains(Collection<?> c);
        
     (4)获取
        a.获取集合中元素个数:int size();
        b.遍历集合中所有元素:Iterator<E> iterator();
        c.判断两个集合中是否存在相同的元素并保留两个集合中相同的元素删除不同的元素:boolean retainAll(Collection<?> c);
     (5)其他
        将集合中元素转为数组:a.    Ojbect[] toArray();
                      b.    <T>  T[] toArray();   泛型

6、迭代器 Iterator
    (1)通过集合对象获取其对应的Iterator对象;
    (2)判断是否存在下一个元素;
    (3)取出该元素并将迭代器对象指向下一个元素;

Iterator iterator():取出元素的方式:迭代器。
        该对象必须依赖于具体容器,因为每一个容器的数据结构都不同。
        所以该迭代器对象是在容器中进行内部实现的。
        对于使用容器者而言,具体的实现不重要,只要通过容器获取到该实现的迭代器的对象即可,也就是iterator方法。

7、Collection两大体系:链表List、集合Set
    List特点:元素有序;元素可以重复;元素都有索引(角标)
    Set 特点:元素无序;元素不可以重复;
    
    List特有的常见方法:有一个共性就是可以操作角标。

8、List三大常用集合:
    Vector:内部是数组数据结构,是同步的(线程安全的)。增删查询都很慢。
    ArrayList:内部是数组数据结构,是不同步的(线程不安全的)。替代了Vector。查询速度快,增删比较慢。
    LinkedList:内部是链表数据结构,是不同步的(线程不安全的)。增删元素速度快。

其中,ArrayList最常用。

9、Set常用集合:
    Set中方法与Collection一致。

(1)HashSet:内部数据结构是哈希表,是不同步的。
        Set集合中元素都必须是唯一的,HashSet作为其子类也需保证元素的唯一性。
        判断元素唯一性的方式:
           通过存储对象(元素)的hashCode和equals方法来完成对象唯一性的。
           如果对象的hashCode值不同,那么不用调用equals方法就会将对象直接存储到集合中;
           如果对象的hashCode值相同,那么需调用equals方法判断返回值是否为true,
            若为false, 则视为不同元素,就会直接存储;
            若为true, 则视为相同元素,不会存储。
        
     PS:如果要使用HashSet集合存储元素,该元素的类必须覆盖hashCode方法和equals方法。
     一般情况下,如果定义的类会产生很多对象,通常都需要覆盖equals,hashCode方法。建立对象判断是否相同的依据。
    
    (2)TreeSet:保证元素唯一性的同时可以对内部元素进行排序,是不同步的。
        判断元素唯一性的方式:
           根据比较方法的返回结果是否为0,如果为0视为相同元素,不存;如果非0视为不同元素,则存。
        TreeSet对元素的排序有两种方式:
            方式一:使元素(对象)对应的类实现Comparable接口,覆盖compareTo方法。这样元素自身具有比较功能。
            方式二:使TreeSet集合自身具有比较功能,定义一个类实现Comparable接口覆盖其compareTo方法。(相当于自定义了一个比较器)
                将该类对象作为参数传递给TreeSet集合的构造函数。(TreeSet(Comparator<? super E> c) )

Java中Collection 的基本认识的更多相关文章

  1. Java中Collection和Collections的区别(引用自:http://www.cnblogs.com/dashi/p/3597937.html)

      1.java.util.Collection 是一个集合接口(集合类的一个顶级接口).它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java 类库中有很多具体的实现.Co ...

  2. java中Collection类及其子类

    1:对象数组(掌握) (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组. 2:集合(Collection)(掌握) (1)集合的由来? 我们学习的是Java ...

  3. java中Collection容器

    1.容器(Collection)也称为集合, 在java中就是指对象的集合. 容器里存放的都只能是对象. 实际上是存放对象的指针(头部地址): 这里对于八种基本数据类型,在集合中实际存的是对应的包装类 ...

  4. Java中Collection和Collections的区别(转载)

    转载来源:http://www.cnblogs.com/dashi/p/3597937.html 1.java.util.Collection 是一个集合接口(集合类的一个顶级接口).它提供了对集合对 ...

  5. java中collection、map、set、list简介 (转)

    Collection接口  Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元 ...

  6. JAVA中Collection接口和Map接口的主要实现类

    Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素 ...

  7. Java中 Collection 、 List 、 Set 、 Map详解

    一.容器( Collection ) 接口    容器( Collection )是最基本的集合接口,一个容器( Collection )保存一组对象( Object ),即对象是容器的元素( Ele ...

  8. java中Collection和Collections的区别

    1.Collection: 它是java集合类的一个通用接口,所有集合类都实现的它 2.Collections: 它是一个封装集合类常用工具方法的类,不能被示例化,只支持静态调用

  9. java中Collection 与Collections的区别

    1. Collection是集合类的一个顶级接口,其直接继承接口有List与Set 而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序.搜索以及 ...

随机推荐

  1. WebUploader 上传插件结合bootstrap的模态框使用时选择上传文件按钮无效问题的解决方法

    由于种种原因(工作忙,要锻炼健身,要看书,要学习其他兴趣爱好,谈恋爱等),博客已经好久没有更新,为这个内心一直感觉很愧疚,今天开始决定继续更新博客,每周至少一篇,最多不限篇幅. 今天说一下,下午在工作 ...

  2. hbase(二)

    一.HBase简介 1.1简介 hbase是bigtable的开源山寨版本.是建立的hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.它介于nosql和RDBMS之间,仅能通过 ...

  3. 浅谈WLAN干扰与抗干扰技术

    一. 无线干扰的分类和来源 无线干扰按照类型可划分为WLAN干扰和非WLAN干扰.WLAN干扰是指干扰源发送的RF信号也符合802.11标准,除此之外都是非WLAN干扰.对WLAN干扰,可进一步按照频 ...

  4. curl 命令返回json结构human readable

    在curl命令后面添加 | python -m json.tool 不想显示curl的统计信息,添加 -s参数 例: curl https://news-at.zhihu.com/api/4/news ...

  5. Hive环境安装

    说明: (Hbase依赖于Hadoop,同时需要把元数据存放在mysql中),mysql自行安装 Hadoop2.0安装参考我的博客: https://www.cnblogs.com/654wangz ...

  6. 337APuzzles

    dangerous /*大水题目.不解释 给你m个数,从中选出n个,保证最大值和最小值的差值最小, 做法:从小到大排序,然后暴力枚举每个长度是n的序列*/ #include<stdio.h> ...

  7. JavaScript常用工具方法封装

    因为工作中经常用到这些方法,所有便把这些方法进行了总结. JavaScript 1. type 类型判断 isString (o) { //是否字符串 return Object.prototype. ...

  8. [Linux 005]——IO重定向

    通常在 Shell 中执行命令的时候,我们会在输入命令的下方看到执行结果,操作系统默认将命令的执行结果输出到显示器上.当然,我们也可以手动的指定输出路径,或者输入路径,这就是 I/O 重定向. 1.标 ...

  9. 20145303刘俊谦 《Java程序设计》实验四 实验报告

    实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如"查网络&q ...

  10. Android执行shell命令 top ps

    Android执行shell命令 一.方法 /** * 执行一个shell命令,并返回字符串值 * * @param cmd * 命令名称&参数组成的数组(例如:{"/system/ ...