Java是一门面向对象编程语言,具有功能强大和简单易用两大属性。Java工具包提供了强大的数据结构,包括枚举、位集合、向量、栈、字典、哈希表、属性等接口类。拉勾IT课小编为大家分析,java的每一个细节点。

Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),程序中最终使用的数据结构是继承自这些接口的数据结构类。

ArrayList、LinkedList、Vector有什么区别?

ArrayList

1)只能装入引用对象(基本类型要转换为封装类);

2)线程不安全;

3)底层由数组实现(顺序表),因为由顺序表实现,所以会具备顺序表的特点,如:需要声明长度、超出长度时需要进行扩容、不适合频繁的移动删除元素、检索元素快;

4)capacity默认为10,超出时,capacity自动增长0.5倍(oldCapacity >> 1)。

Vector:

1)只能装入引用对象(基本类型要转换为封装类);

2)Vector通过synchronized方法保证线程安全;

3)底层也由数组实现;

4)capacity默认为10(在构造方法中),超出时增长capacityIncrement的量,capacityIncrement小于等于0时,则增长1倍((capacityIncrement > 0) ? capacityIncrement : oldCapacity)。

LinkedList

1)只能装入引用对象(基本类型会转换为封装类);

2)线程不安全;

3)底层实现为链表,具备链表的特点,如:不用声明长度、检索性能较差,但是插入移动删除较快。

4)链表通过Node对象实现。

链表与数组的区别

数组在使用之前必须定义大小,而且不能动态定义大小,会造成给数组分配了太多的单元而浪费了宝贵的资源,糟糕的一面是,程序运行时需要处理的数据可能多于数组的单元。

当需要动态的减少或增加数据项时,可以使用链表这种数据结构。

为什么使用散列表?

对于数组和链表这两种数据结构,如果要查找它们存储的某个特定元素却不知道它的位置,就需要从头开始访问元素直到找到匹配的为止;如果数据结构中包含很多的元素,就会浪费时间。这时最好使用散列表来存储要查找的数据。

List接口主要实现类包括:

ArrayList():代表长度可以改变得数组。可以对元素进行随机的访问,向ArrayList()中插入与删除元素的速度慢。

LinkedList():在实现中采用链表数据结构。插入和删除速度快,访问速度慢。

对于List的随机访问来说,就是只随机来检索位于特定位置的元素。List的get(int index)方法放回集合中由参数index指定的索引位置的对象,下标从“0” 开始。最基本的两种检索集合中的所有对象的方法。

使用HashSet判断主键是否存在

HashSet实现Set接口,由哈希表(实际上是HashMap)实现,但不保证set的迭代顺序,并允许使用null元素。HashSet的时间复杂度跟HashMap一致,如果没有哈希冲突则时间复杂度为O(1),如果存在哈希冲突则时间复杂度不超过O(n)。所以,在日常编码中,可以使用HashSet判断主键是否存在。

借助灵活的在线学习,不断提升java在数据表的应用,遇到了难点,及时学习,数据结构的掌握不是简单地学习,要在学习环节中不断掌握,每一个数据结构的知识点,提升对数据应用

java 十亿数据量运行速度慢_Java学习进阶之数据结构知识梳理相关推荐

  1. java 十亿数据去重_如何在有限的内存限制下实现数十亿级手机号码去重

    版权申明 原创文章:本博所有原创文章,欢迎转载,转载请注明出处,并联系本人取得授权. 版权邮箱地址:banquan@mrdwy.com 问题难点 文本和数据的去重是经常要用到的重要操作,普通数量的文本 ...

  2. 入职第一天,老板竟然让我优化5亿数据量,要凉凉?

    jsoncat:https://github.com/Snailclimb/jsoncat[1] (仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架) 前段 ...

  3. Redis 10亿数据量只需要100MB内存,为什么这么牛?

    作者:java架构设计   来源:toutiao.com/i6767642839267410445 本文主要和大家分享一下redis的高级特性:bit位操作. 力求让大家彻底学会使用redis的bit ...

  4. 现身说法:实际业务出发分析百亿数据量下的多表查询优化

    今天给大家带来的讨论主题是通过实战经验来对百亿数据量下的多表数据查询进行优化,俗话说的好,一切脱离业务的架构都是耍流氓,接下来我就整理一下今天早上微信群里石头哥给大家分享的百亿数据量多表查询架构以及优 ...

  5. Redis基本使用及百亿数据量中的使用技巧分享

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9941208.html 作者:大石头 时间:2018-11-10 晚上20:00 地点:钉钉群(组织代码B ...

  6. 面对 10 亿数据量的挑战,如何对系统进行性能优化?

    作者 | 中华石杉 责编 | 伍杏玲 本文经授权转载自石杉的架构笔记 这篇文章,我们来聊一聊在十亿级的大数据量技术挑战下,世界上最优秀的大数据系统之一的Hadoop是如何将系统性能提升数十倍的? 首先 ...

  7. es 仅返回单个字段 查询_ES性能优化实战,几十亿数据查询 3 秒返回!

    来源:cnblogs.com/mikevictor07/p/10006553.html 在此篇幅中偏重于 ES 的优化,关于 HBase,Hadoop 的设计优化有很多文章可以参考,不再赘述. 需求说 ...

  8. Java操作大数据量Excel导入导出万能工具类(完整版)

    Java操作大数据量Excel导入导出万能工具类(完整版) 转载自:https://blog.csdn.net/JavaWebRookie/article/details/80843653 更新日志: ...

  9. Java操作百万数据量Excel导入导出工具类(程序代码教程)

    Java操作百万数据量Excel导入导出工具类(程序代码教程): # 功能实现1.自定义导入数据格式,支持配置时间.小数点类型(支持单/多sheet)(2种方式:本地文件路径导入(只支持xls.xls ...

最新文章

  1. Linux_Bash脚本基础
  2. swagger导出excel文档_将Swagger2文档导出为HTML或markdown等格式离线阅读
  3. 六十八、SpringBoot连接MongoDB操作
  4. js ajax 浏览器兼容,JS跨浏览器兼容,一点点总结
  5. host文件知识详解
  6. matlab padarray函数详解
  7. C++雾中风景4:多态引出的困惑,对象的拷贝?
  8. python搜索引擎和爬虫框架介绍
  9. js 比较时分大小_JS 判断两个时间的大小(可自由选择精确度:天,小时,分钟,秒)...
  10. python表白代码大全-python表白代码
  11. oracle中sql拼接字符串函数,sql字符串连接函数
  12. 注塑模具的温度对注塑工艺的影响到底有多大呢
  13. 华为softco直接用语音服务器注册IMS返回403错误代码
  14. 阿里云提示ECS实例存在挖矿活动的处理
  15. php liger 表格排序,LigerUI之grid表格点击表头标题排序实现
  16. 高端进销存管理系统源码+微信小程序,
  17. 软件在环测试 Software in-The-Loop Test
  18. SQL数据分析淘宝用户分析实操
  19. JavaSE入门学习38:Java集合框架之迭代器
  20. 如何向Salesforce Support提Case

热门文章

  1. 操作系统:第三章 内存管理2 - 详解虚拟内存,页面置换算法,页面分配策略
  2. 【Java爬虫】我的第一个爬虫 -- 简单抓取网页源代码
  3. C++ cin.putback()输入【已知行数】但【未知每行数字个数】的思路
  4. 小师妹学JVM之:逃逸分析和TLAB
  5. Leet Code OJ 482. License Key Formatting [Difficulty: Medium]
  6. Leet Code OJ 219. Contains Duplicate II [Difficulty: Easy]
  7. 为何采用双亲委派机制
  8. 扩展内容(进程的通信方式)
  9. I/O多路复用:select、poll和epoll详解
  10. js(小程序或JavaScript)中[]、{}、()区别