集合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. PAT 1121 Damn Single[简单]

    1121 Damn Single (25 分) "Damn Single (单身狗)" is the Chinese nickname for someone who is bei ...

  2. PATH_INFO, SCRIPT_NAME, REQUEST_URI区别示例

     

  3. 11、classmethod和staticmethod

    类中定义的函数有两大类(3小种)用途,一类是绑定方法,另外一类是非绑定方法 1. 绑定方法:特点:绑定给谁就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入1.1 绑定给对象的:类中定义的函数默 ...

  4. http协议中post方法发出请求

    package com.chinaums.szm.test.base.igoodful; import com.fasterxml.jackson.databind.ObjectMapper;impo ...

  5. 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016) B - Bribing Eve

    地址:http://codeforces.com/gym/101174/attachments 题目:pdf,略 思路: 把每个人的(x1,x2)抽象成点(xi,yi). 当1号比i号排名高时有==& ...

  6. $Python常用内置函数典型用法

    Python中有许多功能丰富的内置函数,本文基于Python 2.7,就常用的一些函数的典型用法做一些积累,不断更新中. sorted函数的三种用法 # coding:utf-8 # sorted函数 ...

  7. java: -source 1.6 中不支持 switch 中存在字符串

    最近在使用IDEA进行单个文件编译的时候给我报错,如题. 解决办法:将 Modules --->Sources ---> Language level 改为 7.0就ok了.

  8. JMeter的安装和目录解析

    Ubuntu系统中jmeter的安装和目录解析 作为一个Linux新手,在使用jdk时,或许会安装配置多次仍然导致无法使用情况(如无法登录系统等),请按如下步骤一步一步安装并配置 相关软件下载地址 J ...

  9. Linux查看系统与内核信息(uname、file和lsb_release -a)

    uname 命令 uname 命令可以用来查看系统与内核的相关信息,命令格式如下: [root@localhost ~]# uname [选项] 选项: -a:查看系统所有相关信息: -r:查看内核版 ...

  10. Spark高级数据分析· 6LSA

    潜在语义分析 wget http://dumps.wikimedia.org/enwiki/latest/enwiki-latest-pages-articles-multistream.xml.bz ...