集合类:List Set Queue Map (容器类):解决数组长度固定的问题

列表List:关心的是索引(有序)

  1. 特点

    • 对象按照索引存储
    • 可以存储重复元素
    • 具有与索引相关的一套方法
  2. 主要实现类
  • ArrayList:动态数组

    • 快速迭代,少量插入元素
  • LinkedList:链表
    • 迭代速度慢,快速插入删除
  1. ArrayList
  • 动态数组,动态的增加和减少元素,可以灵活的设置数组的大小
  • 构造
    • ArrayList():构造一个初始容量为10的空链表
    • ArrayList(int init):构造一个具有初始容量的空列表
    • List<E> list = new ArrayList<E>();(常用向上转型,E为包装器类)
    • ArrayList<E> list = new ArrayList<E>();
  • 方法:
    • add(E e):将指定的元素添加到此列表的尾部
    • add(int index,E element):添加到指定位置
    • remove(int index):移除此列表中指定位置上的元素
    • get(int index):返回指定位置上的元素
    • set(int index,E element):替代指定位置上的元素
    • size():返回此列表中的元素个数
  1. LinkedList
  • 双向链表
  • 构造方法:
    • LinkedList()
    • LinkedList(Collection<? extends E> c):构造一个包含指定 collection 中的元素的列表
  • 方法:(同ArrayList)

Set 集:关心唯一性

  1. 特点:无序,不重复
  2. 主要实现类
  • HashSet:使用被插入对象的Hash码
  • LinkedHashSet:有序的HashSet
  • TreeSet:二叉树结构,保证元素按照自然顺序进行升序排序
  1. HashSet
  • 基于HashMap实现的,HashSet底层采用HashMap来保存所有元素
  • 不允许重复
  • 无序
  • 方法
    • add(E,e);
    • clear();移除所有元素
    • remove(Object o),若存在,则移除
    • size():返回set中元素的数量(set的容量)
    • isEmpty():判断是否为空
  1. TreeSet(树集)
  • 数据插入后会自动排序
  • 操作较慢(迭代器总是以排好序的顺序访问每个元素)
  • 方法
    • add(E e)
    • remove(Object o)
    • first():返回第一个元素(最低)
    • last():返回最后一个元素(最高)
    • isEmpty()
    • size()
  1. LinkedHashSet
  • 在HashSet的实现上添加了Linked的支持,在每个结点上通过一个链表串联起来,有确定的顺序。适用于有常量复杂度的高效性存取性能要求,同时又要求排序的情况
  • 继承于HashSet,又基于LinkedHashMap来实现
  • 方法:继承HashSet
  1. 三个类的比较
  • HashSet

    • 不能保证元素的排列顺序,顺序有可能发生变化(无序)
    • 不同步,集合元素可以是null,但是只可以有一个null
    • 哈希表是通过使用成为散列法的机制来存储信息,元素并没有以某种特定顺序来存放
  • LinkedHashList
    • 有序(元素的插入顺序),允许以插入的顺序在集合中迭代
    • 遍历性能比HashSet好,插入时性能较差
  • TreeSet
    • 提供一个使用树结构存储Set接口实现,对象以升序顺序存储,访问和遍历的时间快

Queue

  1. 特殊的线性表,front删除,rear插入
  2. 继承了collection接口
  3. LikedList实现了Queue接口
  4. 方法
  • add(E e):若队列已满,则抛出异常
  • remove():移除并返回队头元素,失败时抛出异常
  • element():返回队头元素
  • offer(E e):添加一个元素并返回true,若队列已满,则返回null
  • poll():移除并返回队头的元素,若队列为空,返回null
  • peek():返回队头元素,若队列为空,则返回null
  • put(E e):添加一个元素,若已满,则阻塞
  • take():移除并返回队头元素

Map

  1. 映射(Map)
  • 对象以键值对存储(key—value
  • key不允许有重复,value允许有重复
  1. Map中元素,可以将key序列,value序列单独抽取出来
  • 使用**keySet()**抽取key序列,将map中所有的keys生成一个Set
  • 使用**values()**抽取value序列,将map中所有的values生成一个Collection
  1. HashMap
  • 基于哈希表的Map接口实现
  • 非线程安全
  • 使用方法
    • Object put(K key,V value)
    • Object get(Object K)
    • containsKey(Object k)
    • containsValue(Object v)
  • 遍历HashMap(增强for循环)
  1. TreeMap
  • 基于红黑树的实现
  • 按照元素的自然顺序排序
  1. LinkedHashMap
  • HashMap的ordered版本(有序)

迭代器(Interator)

  1. 轻量级对象
  2. 被Collection继承
  3. 功能:用于对容器的遍历
  4. 方法
  • hasNext():判断是否有可以迭代的元素
  • next():返回当前元素,并返回下一个元素
  • remove():从迭代器指向的集合中移除迭代器返回的最后一个元素

泛型

  1. 增强代码的通用性,避免强制类型转换
  2. 只接受引用数据类型作为类型参数
  3. 语法
  • class 名称 <泛型列表>
  • class ArrayList

Java——容器和泛型相关推荐

  1. Java——容器(泛型)

    [泛型]  起因:JDK1.4之前类型不明确  <1>装入集合的类型都被当做Object对待,从而失去自己的实际类型.  <2>从集合中取出时往往需要转型,效率低,且很容易出错 ...

  2. 2015第22周六Java反射、泛型、容器简介

    Java的反射非常强大,传递class, 可以动态的生成该类.取得这个类的所有信息,包括里面的属性.方法以及构造函数等,甚至可以取得其父类或父接口里面的内容. obj.getClass().getDe ...

  3. 菜鸟学习笔记:Java提升篇3(容器3——泛型、排序)

    菜鸟学习笔记:Java容器3--泛型.排序 泛型 泛型类 泛型接口 泛型方法 泛型继承 通配符"?" 泛型知识点补充 容器排序 Comparable接口与compareTo方法 C ...

  4. Java语言基础(三)——异常、容器、泛型

    目录 一.异常 1.1.简单异常 1.1.1.检查型异常 1.1.2.运行时异常 1.1.3.错误Error 1.2.异常处理机制 1.3.自定义异常 1.4.实际应用中的经验总结 二.容器 2.1. ...

  5. Java中的泛型 --- Java 编程思想

    前言 ​ 我一直都认为泛型是程序语言设计中一个非常基础,重要的概念,Java 中的泛型到底是怎么样的,为什么会有泛型,泛型怎么发展出来的.通透理解泛型是学好基础里面中非常重要的.于是,我对<Ja ...

  6. java object转泛型_为什么Java的泛型要用擦除实现

    在 Java 中的 泛型 ,常常被称之为 伪泛型 ,究其原因是因为在实际代码的运行中,将实际类型参数的信息擦除掉了 (Type Erasure) .那是什么原因导致了 Java 做出这种妥协的呢?下面 ...

  7. 【Java心得总结六】Java容器中——Collection

    在[Java心得总结五]Java容器上--容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...

  8. java定义list_我的Java Web之路59 - Java中的泛型

    本系列文章旨在记录和总结自己在Java Web开发之路上的知识点.经验.问题和思考,希望能帮助更多(Java)码农和想成为(Java)码农的人. 目录 介绍 再谈Java中的类型 为什么需要泛型? J ...

  9. [转载] 详解Java中的泛型

    参考链接: Java中具有泛型的有界类型 1.什么是泛型 泛型,即"参数化类型".一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参.那么参数化类型怎么理解呢?顾名 ...

  10. 深入理解Java 容器

    Java 容器 Java 容器 一.概览 Collection Map 二.容器中的设计模式 迭代器模式 适配器模式 三.源码分析 ArrayList Vector CopyOnWriteArrayL ...

最新文章

  1. nGrinder详细介绍及性能工具对比
  2. matplotlib包画基本的图
  3. python多维数据post给php_使用Python中的POST将数据发送到PHP
  4. java.util.logging.Logger基础教程
  5. struct and union
  6. 汽车电子专业知识篇(三)-自动驾驶中的多传感器融合
  7. 小猫的java基础知识点汇总(下)
  8. 拦截游戏窗口被移动_「维维足球pro-教案」50个传控踢法练习之(一、二)追球游戏...
  9. raspberry pi_如何使用Raspberry Pi构建数字针Kong相机
  10. oracle consistent gets,Oracle buffer cache理解之七——统计信息!
  11. 设计模式的七大设计原则:其六:迪米特法则
  12. javascript学习笔记之入门
  13. 大量HW红队+蓝队文档下载-定期更新
  14. 高德地图热力图,高德自带热力图heatmap
  15. 华为交换机DHCP Server释放IP
  16. jersey 过滤_Jersey的Filter详解
  17. 《股市稳赚》书中的精髓:用简单的神奇公式进行股票投资,获得稳定而持久的收益。
  18. 瑞利分布(Rayleigh Distribution)回顾
  19. 82.【LibraryManger】
  20. pdf书籍规范页码编排

热门文章

  1. 袁玉玮:简介人工智能在基金界的应用现状 (二)卖方交易员被冲击
  2. (转)跳舞的大象:郭士纳在IBM的案例
  3. (转)嘉信理财推出全新智能投顾平台
  4. C#:SQLite大量插入的效率问题
  5. 用OpenStack构建南方电网广东公司能源云
  6. 【路径规划】基于matalb穷举法机器人栅格地图避障路径规划【含Matlab源码 1675期】
  7. 【路径规划】基于matlab粒子群优化蚁群算法最短路径规划【含Matlab源码 076期】
  8. 人工智能和机器学习的前五门课程
  9. 单元格排序_Excel中这8种简单实用的排序方法,很多人都还不会用!
  10. jsonp 获取图片文件流_【国际IT专场】Laravel Media Library多媒体文件的上传与管理...