---恢复内容开始---

集合当中有很多都是应用到泛型的技术,所以在讲集合之前,应该先将泛型的概念普及一下。

泛型:
    (1)泛型是一种类型,但是这种类型是在编译或者调用方法时才确定。
    (2)格式:
       <数据类型>    如:Collection<E>这里的E指的是任意类型,可以理解为Object类型,因为Object是所有类的根类
    (3)好处:
        A:把运行期间的转换异常给提前到了编译期间
        B:优化了程序设计,不需要强制类型转换
        C:在减少了代码量的同时还增强了程序的可拓展性
    (4)泛型的演变
        A:泛型类(尤其是在C++中有很多的模板类,其实就是Java中的泛型)
        B:泛型方法
        C:泛型接口
    (5)泛型的使用:
        API中的类或者接口,其跟有<E>,就是泛型的应用。
       一般在集合中用集合    (1)可以对多个对象进行存储,方便我们对多个对象的操作

(2)集合的特点:
        1、长度可以发生改变
        2、只能存储对象
        3、可以存储多种类型对象(一般存储的还是同一种)
    (3)集合和数组的区别
        1、长度问题  数组固定;集合可变
        2、存储元素问题
             数组可以是基本类型,也可以是引用类型。
             集合只能是引用类型。
        3、是否同一类型
             数组元素类型一致。
             集合元素类型可以不一致。(在生成集合对象的时候不指定类型)
    (4)集合体系的由来
         集合是存储多个元素的容器,但是,由于数据结构不同,java就提供了多种集合类。
         而这多种集合类有共性的功能,所以,通过不断的向上抽取,最终形成了集合体系结构。

集合的特点:

Collection 一次存一个对象, 单列集合
    List 可重复, 有索引,有序
        ArrayList 数组实现, 查找快, 线程不安全
        LinkedList 链表实现, 增删快, 线程不安全
        Vector 数组实现, 线程安全
    Set 不可重复, 没索引,无序
        HashSet 使用哈希算法去重复, 效率高, 但元素无序
        TreeSet TreeSet是用排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
        LinkedHashSet HashSet的子类, 原理相同, 除了去重复之外还能保留存储顺序
这里先介绍集合的抽象类,而其抽象类提供的方法其实就是大部分需要用到的功能。学会了父类,再去学习其字类的功能,就会快很多了,因为子类拓展的功能其实并不多。这里所介绍的六个具体实现类只是其中比较常用的,还有很多其他实现类,有兴趣的朋友可以通过API去查看。

---恢复内容结束---

集合当中有很多都是应用到泛型的技术,所以在讲集合之前,应该先将泛型的概念普及一下。

泛型:
    (1)泛型是一种类型,但是这种类型是在编译或者调用方法时才确定。
    (2)格式:
       <数据类型>    如:Collection<E>这里的E指的是任意类型,可以理解为Object类型,因为Object是所有类的根类
    (3)好处:
        A:把运行期间的转换异常给提前到了编译期间
        B:优化了程序设计,不需要强制类型转换
        C:在减少了代码量的同时还增强了程序的可拓展性
    (4)泛型的演变
        A:泛型类(尤其是在C++中有很多的模板类,其实就是Java中的泛型)
        B:泛型方法
        C:泛型接口
    (5)泛型的使用:
        API中的类或者接口,其跟有<E>,就是泛型的应用。
       一般在集合中用集合    (1)可以对多个对象进行存储,方便我们对多个对象的操作

(2)集合的特点:
        1、长度可以发生改变
        2、只能存储对象
        3、可以存储多种类型对象(一般存储的还是同一种)
    (3)集合和数组的区别
        1、长度问题  数组固定;集合可变
        2、存储元素问题
             数组可以是基本类型,也可以是引用类型。
             集合只能是引用类型。
        3、是否同一类型
             数组元素类型一致。
             集合元素类型可以不一致。(在生成集合对象的时候不指定类型)
    (4)集合体系的由来
         集合是存储多个元素的容器,但是,由于数据结构不同,java就提供了多种集合类。
         而这多种集合类有共性的功能,所以,通过不断的向上抽取,最终形成了集合体系结构。

集合的特点:

Collection 一次存一个对象, 单列集合
    List 可重复, 有索引,有序
        ArrayList 数组实现, 查找快, 线程不安全
        LinkedList 链表实现, 增删快, 线程不安全
        Vector 数组实现, 线程安全
    Set 不可重复, 没索引,无序
        HashSet 使用哈希算法去重复, 效率高, 但元素无序
        TreeSet TreeSet是用排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
        LinkedHashSet HashSet的子类, 原理相同, 除了去重复之外还能保留存储顺序
这里先介绍集合的抽象类,而其抽象类提供的方法其实就是大部分需要用到的功能。学会了父类,再去学习其字类的功能,就会快很多了,因为子类拓展的功能其实并不多。这里所介绍的六个具体实现类只是其中比较常用的,还有很多其他实现类,有兴趣的朋友可以通过API去查看。

Java基础系列--08_集合1的更多相关文章

  1. Java基础系列7——集合系列(1)框架概述

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 集合框架概述 Jav ...

  2. Java基础系列--ArrayList集合

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8494618.html 一.概述 ArrayList是Java集合体系中最常使用,也是最简单 ...

  3. Java基础系列--09_集合2

    昨天介绍了集合的主要架构体系,今天主要的目的是学习集合的迭代器的遍历和List的特有功能. 迭代器:     概述:由于多种集合的数据结构不同,所以存储方式不同,取出方式也不同.但是他们都是有判断和获 ...

  4. Java多线程系列--“JUC集合”02之 CopyOnWriteArrayList

    概要 本章是"JUC系列"的CopyOnWriteArrayList篇.接下来,会先对CopyOnWriteArrayList进行基本介绍,然后再说明它的原理,接着通过代码去分析, ...

  5. Java多线程系列--“JUC集合”03之 CopyOnWriteArraySet

    概要 本章是JUC系列中的CopyOnWriteArraySet篇.接下来,会先对CopyOnWriteArraySet进行基本介绍,然后再说明它的原理,接着通过代码去分析,最后通过示例更进一步的了解 ...

  6. Java基础系列-ArrayList

    原创文章,转载请标注出处:<Java基础系列-ArrayList> 一.概述 ArrayList底层使用的是数组.是List的可变数组实现,这里的可变是针对List而言,而不是底层数组. ...

  7. Java基础系列-Collector和Collectors

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/10748925.html 一.概述 Collector是专门用来作为Stream的coll ...

  8. Java基础系列-equals方法和hashCode方法

    原创文章,转载请标注出处:<Java基础系列-equals方法和hashCode方法> 概述         equals方法和hashCode方法都是有Object类定义的. publi ...

  9. Java基础系列-Comparable和Comparator

    原创文章,转载请标注出处:<Java基础系列-Comparable和Comparator> 一.概述         Java中的排序是由Comparable和Comparator这两个接 ...

随机推荐

  1. Spark学习之路 (一)Spark初识

    目录 一.官网介绍 1.什么是Spark 二.Spark的四大特性 1.高效性 2.易用性 3.通用性 4.兼容性 三.Spark的组成 四.应用场景 正文 回到顶部 一.官网介绍 1.什么是Spar ...

  2. JAVA中AWT编程

    JAVA使用AWT和Swing 类完成图形用户界面编程,AWT全称是抽象窗口工具集(Abstract Window Toolkit),它是最早的sun提供的GUI库(Graphics User Int ...

  3. [Swift-2019力扣杯春季决赛]2. 按字典序排列最小的等效字符串

    给出长度相同的两个字符串:A 和 B,其中 A[i] 和 B[i] 是一组等价字符.举个例子,如果 A = "abc" 且 B = "cde",那么就有 'a' ...

  4. SQL中关于不能显示count为0的行的问题

    今天在写自己一个博客项目时遇到了一个数据库问题,因为对于数据库自己所知道的还是很浅显的,对一些查询语句不怎么熟悉. 我目前有一个文章表和评论表,评论表里面有个post_id对应文章表里面的id,想查询 ...

  5. 超级简单!把文档转换成网页格式(Core)

    因为需要把好多的文档放在服务器上访问,最开始是使用第3方网站www.aconvert.com,这个其实也挺方便的, 最后由于一些需求原因,最终只有依靠代码来进行,以下是简化后的代码 创建一个控制台应用 ...

  6. java SE Development kit 8 Update 201 (64-bit) 的安装相关

    登录http://www.oracle.com,下载JDK(J2SE) JDK 1.0,1.1,1.2,1.3,1.4 1.5 (JDK5.0) à支持注解.支持泛型   1.6(JDK6.0) à ...

  7. SQLI LABS Advanced Part(23-37) WriteUp

    继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...

  8. ToastUtil【简单的Toast封装类】【未自定义Toast的显示风格】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 一个简单的Toast封装类. 效果图 API = 6.0 API = 4.4.2 代码分析 实现了不管我们触发多少次Toast调用, ...

  9. JavaScript一看就懂(2)闭包

    认识闭包之前需要先了解作用域,如果你对作用域还没有足够了解,请移步JavaScript一看就懂(1)作用域 什么是闭包? 我们可以先简单认为:一个函数a定义在另一个函数b里面,这个函数a就是闭包: f ...

  10. 强化学习(五)用时序差分法(TD)求解

    在强化学习(四)用蒙特卡罗法(MC)求解中,我们讲到了使用蒙特卡罗法来求解强化学习问题的方法,虽然蒙特卡罗法很灵活,不需要环境的状态转化概率模型,但是它需要所有的采样序列都是经历完整的状态序列.如果我 ...