Java极客  |  作者  /  铿然一叶

这是Java极客的第 48 篇原创文章

一、数组的特点

1.数组大小固定

2.一个数组只能存储相同数据类型

3.随机访问性能高

4.存储空间连续,这样可以被缓存,连续访问性能高

5.不适合做查找操作

6.扩容成本高

二、数组常用应用场景

基于数组的特点,数组适合随机访问和顺序访问,不适合查找,常用场景如下:

1.排名统计数据,例如歌曲排名,班级排名等等

2.固定周期统计数据,例如周一到周日,一月到十二月的统计数据

3.固定大小数据,例如数据分页时的每页记录

三、数组在java集合中的应用

java中很多集合类的底层都用到了数组,例如ArrayList,Vector和Stack。

ArrayList从名字就可以看出来是个数组列表,它封装了数组的基本操作,包括添加元素,删除元素,随机访问,动态扩容等等,可理解为就是个动态数组,它的主要应用场景是随机访问,且不做查询,例如遍历成员。

Vector的底层也是数组,和ArrayList的最大区别是Vector是线程安全的, ArrayList非线程安全。

Stack继承了Vector,从栈的访问特点来看也是随机访问,首先插入数据,然后从后往前访问数据,例如java的异常堆栈,调用链的调用栈等等。

以上这些集合类封装了数组,且符合数组的使用特点:随机访问,不做查询,其他底层使用数组的java集合类也是一样的道理。

end.

java中数据结构的应用_Java集合入门 (二)常用数据结构和应用场景-数组相关推荐

  1. java 中list类型未知_Java集合-List

    Java Collection 在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便.这些接口和类有很多对抽象数据类型操作的A ...

  2. java list 之详解_java集合(二)List集合之ArrayList详解

    前言: 有序列表,允许存放重复的元素: 实现类: ArrayList:数组实现,查询快,增删慢,轻量级:(线程不安全) LinkedList:双向链表实现,增删快,查询慢 (线程不安全) Vector ...

  3. java中给对象的List集合去重的几种方法(Lambda)

    java中给对象的List集合去重的几种方法 前言 一.lambda表达式的去重方式 二.Stream API中的collect去重方法 三.Stream API 中的distinct方法去重 前言 ...

  4. 第87节:Java中的Bootstrap基础与SQL入门

    第87节:Java中的Bootstrap基础与SQL入门 前言复习 什么是JQ? : write less do more 写更少的代码,做更多的事 找出所有兄弟: $("div" ...

  5. java中实参和形参_java中形参和实参的区别

    实参和形参是程序设计语言中的通用概念,并不是只有C,C++有而JAVA没有.关于他们两者的区别你知道吗?下面是学习啦小编为大家准备的java中形参和实参的区别,希望大家喜欢! java中形参和实参的区 ...

  6. java队列_java集合入门和深入学习(详解),看这篇就差不多了

    一.集合入门总结 集合框架: Java中的集合框架大类可分为Collection和Map:两者的区别: 1.Collection是单列集合:Map是双列集合 2.Collection中只有Set系列要 ...

  7. java中的集合_Java 集合介绍,常用集合类

    JAVA 集合 在处理数据的过程中经常会需要一个容器来存储某一类型的数据,Java 中的数组就是这样一种容器.但 Java 中的数组有其局限性,定义后的数组长度不可变,超出数组长度后就不能再存放数据了 ...

  8. java中集合类的转换_Java中的两个常用工具类及集合数组的相互转换

    为了编程人员的方便及处理数据的安全性,Java特别提供了两个非常有用的工具类: 一.Collections 1.Collections类的特点: 集合框架的工具类.里面定义的都是静态方法. 2.Col ...

  9. java中set的遍历_java中遍历set集合,java中set怎么遍历?

    之前给大家介绍了一下java对set对象进行去重的方法,那么下面接着给大家介绍的就是java中遍历set集合方法的内容,一起来了解一下具体方法吧! java中遍历set的三种方式:对set的遍历 1. ...

最新文章

  1. 告诉你一种精简、优化代码的方式
  2. 物体6-Dof pose estimation主流方法汇总
  3. RHEL5系统X桌面中文乱码解决办法
  4. 互联网协议 — PPP 点对点协议
  5. Android 模拟多线程下载
  6. Tree-CNN:一招解决深度学习中的「灾难性遗忘」
  7. JavaScript之引用类型介绍
  8. Mysql实现主从复制(一主双从)
  9. 爱泼斯坦事件发酵,MIT师生发起抗议逼迫校长Rafael Reif辞职
  10. linux分析目录内存,在 Linux x86-64 模式下分析内存映射流程
  11. github hexo搭建博客
  12. Morpheus:虚拟现实的新杀器
  13. 为什么32.768kHz的晶振封装这么另类?
  14. java宿舍管理系统代码_JAVA学生宿舍管理系统
  15. CAD二次开发高版本调用内部命令AcedCmdS和AcedCmdC
  16. kali Linux 系统安装教程
  17. np.isin判断数组元素在另一数组中是否存在
  18. 人工智能 机器学习 数据挖掘 数据分析 算法大全
  19. 关于微信小程序开发过程中的页面刷新的解决方案
  20. 一位月薪1.2w的北漂程序员真实生活!

热门文章

  1. Fiddler 从安装到使用 (creation of the root certificate wasn)
  2. PHP的替换strstr strtr str_replace substr_replace
  3. Yii的查询后缀限定
  4. JS的parseInt
  5. scum开服务器延迟高怎么办,人渣SCUM卡顿优化方法 人渣SCUM卡顿怎么办
  6. java编程打印以下图形,分享java打印简单图形的实现代码
  7. 湖南工程学院计算机毕业设计,湖南工程学院毕业设计模板.docx
  8. c++指针引用导出文件
  9. java putall实现,Java EnumMap putAll()
  10. 运放全波整流电路_10种精密全波整流电路