什么是集合

1、集合类存放于java.util包中。

2、集合类型主要有3种:set(集)、list(列表)和map(映射)。

3、集合存放的都是对象的引用,而非对象本身。所以我们称集合中的对象就是集合中对象的引用。

简单来讲:集合就是一个放数据的容器,准确的说是放数据对象引用的容器。

集合有哪些以及它们之间的关系

Java 集合框架主要结构图

为了能看懂第一张集合框架图,我们先讲解一下在这里会用到的UML类图的知识(这里就不展开具体讲解UML知识)。

1、实现:接口和实现类的关系



2、泛化:父类和子类之间的关系,继承就是泛化的一种

理解了UML类图之后,我们就能从第一张图中分析得知:

1、集合主要分为Collection和Map两个接口

2、Collection又分别被List和Set继承

3、List被AbstractList实现,然后分为3个子类,ArrayList,LinkList和Vector

4、Set被AbstractSet实现,又分为2个子类,HashSet和TreeSet

5、Map被AbstractMap实现,又分为2个子类,HashMap和TreeMap

6、Map被Hashtable实现

Collection 
├List 
│├LinkedList 
│├ArrayList 
│└Vector 
│ └Stack 
└Set 
  ├HashSet 
  └TreesSet 
Map 
├Hashtable 
├HashMap 

└TreeMap  


Collection接口介绍

Collection作用就是规定了一个集合有哪些基本的操作

collection的常规用法:

Collection c = new ArrayList();Iterator it = c.iterator();while(it.hasNext()){Object ob = it.next();}


这里主要是插入数据,清空数据,是否包含,是否相等,集合里的数据个数和转化成数组这几种操作

比如 :

  • int size()

    • 获取元素个数
    • boolean isEmpty()
    • 是否个数为 0
    • boolean contains(Object element)
    • 是否包含指定元素
    • boolean add(E element)
    • 添加元素,成功时返回 true
    • boolean remove(Object element)
    • 删除元素,成功时返回 true
    • Iterator<E> iterator()
    • 获取迭代器

还有一些操作整个集合的方法,比如 :

  • boolean containsAll(Collection<?> c)

    • 是否包含指定集合 c 的全部元素
  • boolean addAll(Collection<? extends E> c) 
    • 添加集合 c 中所有的元素到本集合中,如果集合有改变就返回 true
  • boolean removeAll(Collection<?> c) 
    • 删除本集合中和 c 集合中一致的元素,如果集合有改变就返回 true
  • boolean retainAll(Collection<?> c) 
    • 保留本集合中 c 集合中两者共有的,如果集合有改变就返回 true
  • void clear() 
    • 删除所有元素

还有对数组操作的方法:

  • Object[] toArray()

    • 返回一个包含集合中所有元素的数组
  • <T> T[] toArray(T[] a) 
    • 返回一个包含集合中所有元素的数组,运行时根据集合元素的类型指定数组的类型

在 JDK 8 以后,Collection 接口还提供了从集合获取连续的或者并行流:

  • Stream<E> stream()
  • Stream<E> parallelStream()

于Collection接口相关还有一个抽象类AbstractCollection:

AbstractCollection是一个抽象类,实现了Collection接口的部分功能,实现了一些最基本的通用操作,把复杂的和业务相关的延迟到子类实现。

在AbstractCollection中,主要实现了contains(), isEmpty(), toArray(), remove(), clear() 这几个操作。有兴趣的同学可以自行研究下,逻辑都比较简单。

总结:本章已经简单的介绍了集合框架里面的结构。具体每个集合的分析放到后面的章节

Java集合(一)什么是集合相关推荐

  1. Java基础知识回顾之四 ----- 集合List、Map和Set

    前言 在上一篇中回顾了Java的三大特性:封装.继承和多态.本篇则来介绍下集合. 集合介绍 我们在进行Java程序开发的时候,除了最常用的基础数据类型和String对象外,也经常会用到集合相关类. 集 ...

  2. JAVA语言基础-面向对象(集合框架02List、泛型)

    2019独角兽企业重金招聘Python工程师标准>>> 16.01_集合框架(去除ArrayList中重复字符串元素方式)(掌握) A:案例演示 需求:ArrayList去除集合中字 ...

  3. 2019-05-26 Java学习日记之Set集合

    HashSet存储字符串并遍历: package com.set;import java.util.HashSet;public class Demo1 {/*** Set集合,无索引,不可以重复,无 ...

  4. Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介

    1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...

  5. java 泛型集合 json_将泛型集合转换成分页json数据

    [java]代码库package com.sunweb.util.jsonfactory; import java.util.List; import com.sunweb.util.jsonfact ...

  6. java创建集合有的不用泛型_为什么在Java泛型右手边的集合类型没有任何影响?...

    使用Java的Generics功能我创建了一个List对象,在左侧我使用的是原始类型List,在右侧我使用的是泛型类型ArrayList. List myList=new ArrayList(); 我 ...

  7. (Java集合框架)Map集合

    Map集合 概述 现实生活中,常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对象关系的对象 ...

  8. java hashset 源码_Java集合源码分析-HashSet和LinkedHashSet

    前两篇文章分别分析了Java的ArrayList和LinkedList实现原理,这篇文章分析下HashSet和LinkedHashSet的源码.重点讲解HashSet,因为LinkedHashSet是 ...

  9. java list取值_Java集合详解

    一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型.为了满足这些常规的编程需要,我们要 ...

  10. java集合——映射表+专用集合映射表类

    [0]README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java集合--映射表+专用集合映射表类 的相关知识: 0.2) for full sour ...

最新文章

  1. 模板方法模式(TemplateMethod) 简介
  2. 【五】搜索推荐技术在电商导购领域的应用——截图小王子
  3. ElasticSearch搜索实例含高亮显示及搜索的特殊字符过滤
  4. JAVA NIO是什么(zz)
  5. SAP CDS entity 中使用 @readonly 进行访问控制
  6. 如何编写 Cloud9 JavaScript IDE 的功能扩展
  7. 拒修电脑后,妹子又约我学机器学习,好烦(甜)!
  8. Redis(四):String字符串数据类型详解
  9. (转)微服务架构 互联网保险O2O平台微服务架构设计
  10. node.js第十课(HTTPserver)
  11. Docker自定义部署Redis镜像
  12. 项目中坑记录:mongo 插入失败无提示
  13. PHP压缩CSS文件
  14. java对象说明 PO,BO,VO,DTO,POJO,DAO,Entity
  15. 关于c++的return
  16. python open读取_读取文件—open()、read()
  17. Could not find artifact com.oracle:ojdbc7:pom:12.1.0.2 in central (https://r......的解决方案
  18. 微信怎么at所有人_[微信艾特所有人怎么弄]微信怎么艾特所有人
  19. Python写房贷计算器的算法
  20. mysql 外键约束失败_MYSQL:错误:无法添加或更新子行:外键约束失败

热门文章

  1. 云计算及其支撑技术简介
  2. HDU 6599 Palindromic_Automaton
  3. php自动加载比直接加载慢,php之自动加载(懒加载)
  4. 什么是字节?字节怎么进行换算?
  5. 10个3d立体字ps金属字图层样式下载
  6. Python3 网络爬虫:视频下载,那些事儿!
  7. C语言日常学习中遇到的易错情况(2022.11.14)
  8. 全民一起玩Python提高篇第十五课:函数式编程初步(下)
  9. html控制树莓派小车,用树莓派来制作简单的遥控小车
  10. vc code 必备插件Code Runner详解及问题