史上最全的Java容器集合之入门

简介: 前言文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820…种一棵树最好的时间是十年前,其次是现在

前言


文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820…

种一棵树最好的时间是十年前,其次是现在

絮叨


不知不觉,自己也写了十来篇文章,在这里谢谢大家的关注,我会继续加油。 接下来讲Java的容器,至于能写多少篇,写多详细,看看吧,争取深一点。

零基础入门不需要阅读源码,面试前一定要回顾和阅读源码(这是面试必考的知识点)!

集合的由来


通常,我们的Java程序需要根据程序运行时才知道创建了多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是!数组只能存放同一类型的数据,而且其长度是固定的,那怎么办了?集合便应运而生了。


集合和数组的区别:


集合图



其实最主要还是讲我圈的这几个

Java.util下面的包 让我们从上往下看吧,这篇就讲几个上层接口吧 具体的容器到时候一个个讲




Iterator迭代器


我们可以发现一个特点,上述所有的集合类,除了map系列的集合,即左边的集合都实现了Iterator接口

它是Java集合的顶层接口(不包括map系列的集合,Map接口是map系列集合的顶层接口)

  Object next():返回迭代器刚越过的元素的引用,返回值是Object,需要强制转换成自己需要的类型。

  boolean hasNext():判断容器内是否还有可供访问的元素。

  void remove():删除迭代器刚越过的元素。

所以除了map系列的集合,我么都能通过迭代器来对集合中的元素进行遍历。

注意:我们可以在源码中追溯到集合的顶层接口,比如Collection接口,可以看到它继承的是类Iterable


然后Iterable中有Iterator


我们来具体聊聊 Iterator


总共4个方法

  • 判断下个迭代器是否还有下一个元素
  • 返回下一个元素的值,并且把自身offset移动下一位
  • 第三个方法 这个可以删除用这个迭代器集合中的元素(注意如果删除之后还是前面获得的迭代器,你会发现原来的迭代器还是没变,得重新获得删除元素之后的迭代器)
  • 1.8的新方法 可以直接遍历迭代器剩下的元素,如果从最开始的话就是遍历所有的迭代器(1.8的函数式编程,写的蛮爽,后面博客会补)

所以我想说的是所有的集合都有迭代器可以用来遍历哈 它是所有集合的最上级

ListIterator


为什么要讲它呢,本来没打算讲,但是想了一下,要写就写全点吧

ListIterator 是 Iterator 的子接口,ListIterator 不仅可以向后迭代,也可以向前迭代。相比 Iterator,

  • 它增加了以下这些方法:
  • boolean hasPrevious();
  • E previous();
  • int nextIndex();
  • int previousIndex();
  • void set(E e);
  • void add(E e);

其实就是 增加可以向前一个下标的操作。大家可以写个测试方法自己试试就知道了 还可以对迭代出来的元素进行替换set()方法


Collection接口介绍


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

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


比如:

  int size() 获取元素个数

  boolean isEmpty() 是否个数为零

  boolean contains(Object element) 是否包含指定元素

  boolean add(E element) 添加元素,成功时返回true

  boolean remove(Object element) 删除元素,成功时返回true

  Iterator iterator() 获取迭代器      Stream 1.8的流 (后面也比较常用)

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

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


结尾


容器的集合入门介绍算是讲完了 后面我会针对他们的具体实现深入讲讲,大家一起学习,一起进步

因为博主也是一个开发萌新 我也是一边学一边写 我有个目标就是一周 二到三篇 希望能坚持个一年吧 希望各位大佬多提意见,让我多学习,一起进步。


相关文章
|
6月前
|
Java 虚拟化 容器
(Java)Java里JFrame窗体的基本操作(容器布局篇-1)
容器 容器,我的理解是可以包容其他东西的玩意。它可以是一个盒子,可以是一个虚拟化的物品,可只要能包裹住其他存在质体的东西,那么都可以称作是容器。例如:JPanel组件和JScollPane组件两者都是容器也是组件。 既然有容器,那么容器中的布局就必不可少了。不然不规矩的摆放物品,人类看不习惯,我也看不习惯 ???? 本篇内容,将说明java JFrame窗体里容器中几类布局。 说明:所有在JFrame窗体里的容器布局都会使用setLayout()方法,采用的布局参数都将放进这个方法里 绝对布局 调用窗体容器
193 1
|
6月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
522 0
|
7月前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
549 0
|
7月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
357 100
|
7月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
364 101
|
6月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
705 51
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
7月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
6月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
170 7
|
6月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
669 2
|
7月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
194 4