Java数据结构内容整理

java初级面试题整理汇总-附答案 1.hashmap的数据结构是什么? 答:在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。 2.说一说java如何实现的跨平台 答:java针对不同的开发系统 开发了不同的JVM虚拟机,并提供了统一的接口(java API... 阅读详情

java数据结构内容整理
关键字: 数据结构 Collection:List、Set 
Map:HashMap、HashTable

如何在它们之间选择

一、Array , Arrays

Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。

1、 效率高,但容量固定且无法动态改变。 
array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。

2、Java中有一个Arrays类,专门用来操作array。 
arrays中拥有一组static函数, 
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。 
fill():将值填入array中。 
sort():用来对array进行排序。 
binarySearch():在排好序的array中寻找元素。 
System.arraycopy():array的复制。

二、Collection , Map

若撰写程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。

1、Collection 和 Map 的区别

容器内每个为之所存储的元素个数不同。 
Collection类型者,每个位置只有一个元素。 
Map类型者,持有 key-value pair,像个小型数据库。

2、各自旗下的子类关系

Collection 
--List:将以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。 
--ArrayList / LinkedList / Vector 
--Set : 不能含有重复的元素 
--HashSet / TreeSet 
Map 
--HashMap 
--HashTable 
--TreeMap

3、其他特征

* List,Set,Map将持有对象一律视为Object型别。 
* Collection、List、Set、Map都是接口,不能实例化。 
继承自它们的 ArrayList, Vector, HashTable, HashMap是具象class,这些才可被实例化。 
* vector容器确切知道它所持有的对象隶属什么型别。vector不进行边界检查。

三、Collections

Collections是针对集合类的一个帮助类。提供了一系列静态方法实现对各种集合的搜索、排序、线程完全化等操作。 
相当于对Array进行类似操作的类——Arrays。 
如,Collections.max(Collection coll); 取coll中最大的元素。 
Collections.sort(List list); 对list中元素排序

四、如何选择?

1、容器类和Array的区别、择取 
* 容器类仅能持有对象引用(指向对象的指针),而不是将对象信息copy一份至数列某位置。 
* 一旦将对象置入容器内,便损失了该对象的型别信息。

2、 
* 在各种Lists中,最好的做法是以ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList(); 
Vector总是比ArrayList慢,所以要尽量避免使用。 
* 在各种Sets中,HashSet通常优于HashTree(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。 
HashTree存在的唯一理由:能够维护其内元素的排序状态。 
* 在各种Maps中 
HashMap用于快速查找。 
* 当元素个数固定,用Array,因为Array效率是最高的。

结论:最常用的是ArrayList,HashSet,HashMap,Array。

注意:

1、Collection没有get()方法来取得某个元素。只能通过iterator()遍历元素。 
2、Set和Collection拥有一模一样的接口。 
3、List,可以通过get()方法来一次取出一个元素。使用数字来选择一堆对象中的一个,get(0)...。(add/get) 
4、一般使用ArrayList。用LinkedList构造堆栈stack、队列queue。

5、Map用 put(k,v) / get(k),还可以使用containsKey()/containsValue()来检查其中是否含有某个key/value。 
HashMap会利用对象的hashCode来快速找到key。 
* hashing 
哈希码就是将对象的信息经过一些转变形成一个独一无二的int值,这个值存储在一个array中。 
我们都知道所有存储结构中,array查找速度是最快的。所以,可以加速查找。

发生碰撞时,让array指向多个values。即,数组每个位置上又生成一个梿表。

6、Map中元素,可以将key序列、value序列单独抽取出来。 
使用keySet()抽取key序列,将map中的所有keys生成一个Set。 
使用values()抽取value序列,将map中的所有values生成一个Collection。

为什么一个生成Set,一个生成Collection?那是因为,key总是独一无二的,value允许重复。

 

Collection List Set Map 区别记忆 
    这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异。 
    有序否 允许元素重复否 
    Collection 否 是 
    List 是 是 
    AbstractSet 否 否 
    HashSet 否 否 
    TreeSet 是(用二叉树排序) 否 
    AbstractMap 否 使用key-value来映射和存储数据,Key必须惟一,value可以重复 
    HashMap 否 使用key-value来映射和存储数据,Key必须惟一,value可以重复 
    TreeMap 是(用二叉树排序) 使用key-value来映射和存储数据,Key必须惟一,value可以重复

    List 接口对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList和LinkedList。你可以将任何东西放到一个List容器 中,并在需要时从中取出。ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内 部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。在具体应用时可以根据需要自由选择。前面说的Iterator只能对容器进行向前遍历,而 ListIterator则继承了Iterator的思想,并提供了对List进行双向遍历的方法。

    Set接口也是 Collection的一种扩展,而与List不同的时,在Set中的对象元素不能重复,也就是说你不能把同样的东西两次放入同一个Set容器中。它的常 用具体实现有HashSet和TreeSet类。HashSet能快速定位一个元素,但是你放到HashSet中的对象需要实现hashCode()方 法,它使用了前面说过的哈希码的算法。而TreeSet则将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外 两个实用类Comparable和Comparator。一个类是可排序的,它就应该实现Comparable接口。有时多个类具有相同的排序算法,那就 不需要在每分别重复定义相同的排序算法,只要实现Comparator接口即可。集合框架中还有两个很实用的公用类:Collections和 Arrays。Collections提供了对一个Collection容器进行诸如排序、复制、查找和填充等一些非常有用的方法,Arrays则是对一 个数组进行类似的操作。

      Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可 形成一个多级映射。对于键对象来说,像Set一样,一个Map容器中的键对象不允许重复,这是为了保持查找结果的一致性;如果有两个键对象一样,那你想得 到那个键对象所对应的值对象时就有问题了,可能你得到的并不是你想的那个值对象,结果会造成混乱,所以键的唯一性很重要,也是符合集合的性质的。当然在使 用过程中,某个键所对应的值对象可能会发生变化,这时会按照最后一次修改的值对象与键对应。对于值对象则没有唯一性的要求。你可以将任意多个键都映射到一 个值对象上,这不会发生任何问题(不过对你的使用却可能会造成不便,你不知道你得到的到底是那一个键所对应的值对象)。Map有两种比较常用的实现: HashMap和TreeMap。HashMap也用到了哈希码的算法,以便快速查找一个键,TreeMap则是对键按序存放,因此它便有一些扩展的方 法,比如firstKey(),lastKey()等,你还可以从TreeMap中指定一个范围以取得其子Map。键和值的关联很简单,用pub (Object key,Object value)方法即可将一个键与一个值对象相关联。用get(Object key)可得到与此key对象所对应的值对象

鱼眼双目测距实战:从OpenCV标定到SGBM匹配的完整流程解析 本文详细解析了鱼眼双目测距的完整流程,从OpenCV标定到SGBM匹配,涵盖标定、校正、匹配和测距四个关键阶段。通过实战经验分享,帮助开发者解决鱼眼镜头强畸变带来的测距挑战,提升测距精度至5%以内。特别适合机器人导航、自动驾驶和VR领域的开发者参考。 阅读详情

相关推荐

Quartus II 13.1 出现 ‘‘can‘t find design entity <Filename>‘‘ 问题的解决方法

Quartus II 13.1 出现 ''can't find design entity '' 问题的解决方法

qq_62076686的博客 1万+

java数据结构内容整理

Collection:List、Set Map:HashMap、HashTable 如何在它们之间选择 一、Array , Arrays Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。 1、 效率高,但容量固定且无法动态改变。 array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。 2...

啊茄,您好 154

ERA5数据批量下载

ERA5再分析数据的IDM接管下载

qq_38734327的博客 3034

java中json重复数据结构_Java数据结构内容整理

java数据结构内容整理关键字: 数据结构 Collection:List、SetMap:HashMap、HashTable如何在它们之间选择一、Array , ArraysJava所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。1、 效率高,但容量固定且无法动态改变。array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。2、Java...

weixin_31360095的博客 240

从拆解到调试:用CS5523改造旧款车载显示屏的完整记录(MIPI转eDP方案)

本文详细记录了使用CS5523芯片将旧款车载显示屏从MIPI接口改造为eDP驱动的完整过程。通过对比LT8911等芯片,选择CS5523实现低功耗、高兼容性的显示升级,涵盖硬件改造、固件配置及调试技巧,最终成功提升显示效果200%。

web99的专栏 344

手把手教你用CH340给正点原子ESP8266烧录固件(附串口调试技巧)

本文详细讲解了使用CH340模块为正点原子ESP8266烧录AT固件的完整流程与关键技巧。核心在于烧录时必须使用3.3V供电,并正确连接GPIO0引脚至GND以进入下载模式。文章涵盖了从硬件接线、软件参数配置到烧录后串口调试验证的全步骤,并提供了常见问题排查方案,帮助开发者一次性成功完成固件烧录。

weixin_29201933的博客 232

数据结构知识点整理(思维导图版)

Java图解数据结构思维导图内容整理

阿凡提的小毛驴专栏 1万+

熵权法+TOPSIS完整教学:用Python评估大学科研实力(含雷达图绘制技巧)

本文提供了一套完整的熵权法与TOPSIS综合评价方法在Python中的实现教程,以高校科研实力评估为例,详细讲解了从数据预处理、客观权重计算、综合排序到结果可视化的全流程。重点介绍了如何利用Python进行数据清洗与转换,通过熵权法自动确定指标权重,并结合TOPSIS模型计算各院校与理想解的相对接近度进行排名。教程还包含了使用Matplotlib绘制专业雷达图的技巧,帮助读者直观呈现多维数据的对比分析结果,适用于各类多指标决策与绩效评估场景。

weixin_28520495的博客 416

Java 数据结构 整理

u013657628的博客 188

【二 Deepseek+Coze案例】【 2.2 Coze + Deepseek 实现小红书爆款笔记:打造专属Agent智能体】

摘要 本文介绍了如何利用Coze平台和Deepseek模型构建自动化Agent智能体,用于生成和优化小红书爆款笔记。文章首先分析了爆款笔记的核心特征,包括精准定位、吸引标题、实用内容、精美排版和热门标签。随后提出Agent智能体的功能需求,涵盖热点追踪、内容生成与优化、数据分析及自动发布等模块。在技术实现上,详细阐述了从环境配置、数据采集到内容生成与优化的全流程,并提供了Python代码示例,展示如何调用Coze函数获取热点数据及竞品笔记。该方案通过智能化的内容创作与运营策略,帮助用户高效打造高曝光的小红书

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 2281

AUTOSAR进阶图解==>AUTOSAR_SWS_CANStateManager

AUTOSAR CAN状态管理器(CanSM)摘要 CanSM是AUTOSAR通信栈中的关键模块,负责管理CAN网络状态和模式转换。主要功能包括: 控制CAN控制器/收发器工作模式(STARTED/STOPPED,NORMAL/STANDBY) 处理三种网络状态(全通信、静默通信、无通信)之间的转换 监控和处理总线关闭(Bus-Off)事件 与ComM、CanIf、BswM等模块协同工作 CanSM通过状态机管理网络状态转换,支持可配置的总线关闭恢复策略。它为每个CAN网络维护独立的状态机,实现网络状态的精

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 5579

算法整理

算法整理,坚持每天一到算法题

NotesChapter 156

华为OD机试双机位C卷-用户入网定期复评(C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【用户入网定期复评】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【用户入网定期复评】。

qq_45776114的博客 837

java数据结构

#mermaid-svg-mixJmpxUJLHUeMaU .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-mixJmpxUJLHUeMaU .label text{fill:#333}#mermaid-svg-mixJmpxUJLHUeMaU .node rect,#mermaid-svg-mixJmpxUJL

咖啡味的小认真 166

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

分享一份Java核心知识点整理.

一份整理的蛮不错的Java核心知识点。覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。 获取方式:看个人说明哦 ...

191

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java面试中的数据结构那些事

未完待续 有待整理。。。

opprash 385

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java基础知识点整理学习

整理一下Java基础的知识点 一. 1.变量 可以直接理解为还没有任何处理的英文字母,不能以数字和特殊符号开头 例: int x = 35; //就是把35的值赋值给x , 赋值前声明变量为整型 2.字符类型 int 整形 String 字符串型 char 字符型 boolean

qq_45574769的博客 232

阿里资深架构师整理出来的一份Java核心知识点分享给大家.pdf

一份整理的蛮不错的Java核心知识点。覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。 获取方式:加入Q群809389099即可免费获取 image.png image.png image.png ...

刀哥谈Java的博客 1411

面试基础知识整理

写在前面: 3月伊始便经历了几次笔面试,深深感到自己知识储备的不足,痛下决心,在期末考试前一周,着手整理基础知识,希望可以对接下来的笔面试以及秋招有所帮助。 本系列文章涉及数据结构及算法均使用 Java 语言描述。 本文系基础知识整理,文章内容多来源于各经典书籍。 本系列文章不定期更新,希望我可以有毅力完成这一工作。 1. 数据结构 数组 链表 栈 队列 数 图 堆 2.

bedisdover的博客 973

java面试资料整理(高级必备)

又到了换工作的季节,最近系统的整理了下java面试相关的学习资料,包含了java核心知识点、数据结构和算法、计算机基础、版本控制工具和面试经验分享等知识。在这里分享给大家,希望大家能够拿到心意公司的offer。

neeef_se的博客 844

阿里架构师近十年时间整理出来的Java核心知识(Java岗位)

整理了一份Java核心知识点。覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。 如果需要获取到这个【核心知识点整理】文档的话帮忙转发一下然后再关注我私信回复“架构资料”得到获取方式吧! ...

十年代码写十年 108
上一篇: java中 List 与Set 的区别
下一篇: java基础知识点总结
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值