前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中的集合(最全干货精美装)

Java中的集合(最全干货精美装)

作者头像
CaesarChang张旭
发布2021-01-26 11:41:06
8560
发布2021-01-26 11:41:06
举报
文章被收录于专栏:悟道

By CaesarChang 合作: root121toor@gmail.com

~关注我 带你看更多精品知识

类集中最大的几个操作接口:Collection、Map、Iterator,这三个接口为以后要使用的最重点的接口。

------------------------为了更好的学习集合 ,先简单串一下数据结构-------------------------------

链表:

二叉树:

二叉树是树的一种,每个节点最多可具有两个子树,即结点的度最大为 2(结点度:结点拥 有的子树数)。

完全二叉树

若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。

二叉树的遍历方式

栈(stack)是限定仅在表尾进行插入和删除操作的线性表。我们把允许插 入和删除的一端称为栈顶,另一端称为栈底 特点: 1先进后出 2栈的入口出口都是栈的顶端位置

队列:

队列是一种特殊的线性表,是运算受到限制的一种线性表,只允许在表的 一端进行插入,而在另一端进行删除元素的线性表。队尾(rear)是允许插入的一端。队头(front)是 允许删除的一端。

数组:

数组是在内存中开辟一段连续的空间, 指定索引位置增加元素:需要创建一个新数组,将指定新元素存储在指定索引位置,再把原 数组元素根据索引,复制到新数组对应索引的位置。 指定索引位置删除元素:需要创建一个新数组,把原数组元素根据索引,复制到新数组对应 索引的位置,原数组中指定索引位置元素不复制到新数组中。 特点: 查找元素快 增删元素慢

--------------------------------------正片开始--------------------------------------------------

集合和数组既然都是容器,它们有啥区别呢?

数组的长度是固定的。集合的长度是可变的。 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类 型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。

Collection集合

Collection是所有单列集合的父接口,单列集合(List和Set)是Collection的子类,每次操作的时候都只能保存一个对象的数据

常用方法: 。 public boolean add(E e) : 把给定的对象添加到当前集合中 。 public void clear() :清空集合中所有的元素 。 public boolean remove(E e) : 把给定的对象在当前集合中删除 。 public boolean contains(E e) : 判断当前集合中是否包含给定的对象 。 public boolean isEmpty() : 判断当前集合是否为空 。 public int size() : 返回集合中元素的个数 。 public Object[] toArray() : 把集合中的元素,存储到数组中

List接口

继承了Collection的所有 ,又增加了一些特有 常用方法: 。public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上 。 public E get(int index) :返回集合中指定位置的元素 。 public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素 。 public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新 前的元素其子类 ArrayList Vector LinkList

ArrayList

线程不安全,有List 和Collection的所有方法,默认数组大小 10

Vector

线程安全 ArrayList有的都会有

ArrayList和Vector相同点与区别:

同: 1 ArrayList和Vector都是继承了相同的父类和实现了相同的接口 2 底层都是数组(Object[])实现的 3 初始默认长度都为10。 区别: 1 同步性: Vector中的public方法多数添加了synchronized关键字、以确保方法同步、也即是Vector线程安全、ArrayList线程不安全。 2 扩容: ArrayList以1.5倍的方式在扩容、Vector 当扩容容量增量大于0时、新数组长度为原数组长度+扩容容量增量、否则新数组长度为原数组长度的2倍 3性能: 在性能方便通常情况下ArrayList的性能更好、而Vector存在synchronized 的锁等待情况、需要等待释放锁这个过程、所以性能相对较差。 4 输出: ArrayList支持支持 Iterator、ListIterator 输出,Vector除了支持 Iterator、ListIterator外,还有Enumeration输出

LinkedList(理解)

存储的结构是链表结构 List里面的方法多有 同时还有自己特有的 。public void addFirst(E e) :将指定元素插入此列表的开头 。 public void addLast(E e) :将指定元素添加到此列表的结尾 。 public E getFirst() :返回此列表的第一个元素 。 public E getLast() :返回此列表的最后一个元素 。 public E removeFirst() :移除并返回此列表的第一个元素 。 public E removeLast() :移除并返回此列表的最后一个元素 。 public E pop() :从此列表所表示的堆栈处弹出一个元素 。 public void push(E e) :将元素推入此列表所表示的堆栈 。 public boolean isEmpty() :如果列表不包含元素,则返回true。

Iterator接口

用来遍历Collcection集合下的所有集合 List Set啦... public E next() :返回迭代的下一个元素 同时指针下移。 public E previous() :返回迭代的上一个元素 同时指针上移。 public boolean hasNext() :如果仍有元素可以迭代,则返回 true 增强for for(数据类型 变量名 : 集合 或 数组名){}

Set接口

Set 接口也是 Collection 的子接口,与 List 接口最大的不同在于,Set 接口里面的内容是不允许重复的 无 get方法 获取方法 1 iterator迭代 2toArray 进行遍历

HashSet

Set的子类, 也无get方法,也不允许重复,,散列存放(顺序不能保证) 获取方法 1 iterator迭代 2toArray 进行遍历 使用举例:

TreeSet和Comparable

有序(按照元素顺序,不是你输入的顺序 ), 此类iterator快递失败, 自定义类实现对象排序: 要比较的类实现Comparable接口

Comparator比较器

将Comparator 传递给sort方法(如Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制

“只要是碰到了集合,则输出的时候想都不想就使用 Iterator 进行输出。”

--------------------------------单值存储结束了------------------------------

Map<K,V> 集合

Map集合存储的是一个个的键值对数据 key value key不可重复

举例:

HashMap

使用对象数组加链表, 当哈希桶的使用超过%75,扩容桶为二倍

如果key相同,并且hashCode相同,那么value会被覆盖 如果key相同,但是hashcode不同,那么value不会被覆盖

Map集合及各子类区别分析:

TreeMap : 有序(自动排序))的Map集合 LinkedHashMap: 也是有序,又有hashMap快速查找的优点

请移步 javaIO点击我进入JavaIO

感觉写的不错的点个赞呗 谢谢了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • By CaesarChang 合作: root121toor@gmail.com
  • ~关注我 带你看更多精品知识
  • ------------------------为了更好的学习集合 ,先简单串一下数据结构-------------------------------
  • 链表:
  • 二叉树:
  • 队列:
  • 数组:
  • --------------------------------------正片开始--------------------------------------------------
  • 集合和数组既然都是容器,它们有啥区别呢?
  • Collection集合
  • List接口
  • ArrayList
  • Vector
  • ArrayList和Vector相同点与区别:
  • LinkedList(理解)
  • Iterator接口
  • Set接口
  • HashSet
  • TreeSet和Comparable
  • Comparator比较器
  • “只要是碰到了集合,则输出的时候想都不想就使用 Iterator 进行输出。”
  • --------------------------------单值存储结束了------------------------------
  • Map<K,V> 集合
  • HashMap
  • Map集合及各子类区别分析:
  • 请移步 javaIO点击我进入JavaIO
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档