java的核心类库_Java核心类库,集合框架

Java集合框架的由来:

Java最初版本只为最常用的数据结构提供了很少的一组类:比如Vector、Stack、Hashtable、BitSet、Enumerrationr接品,其中Enumerrationr接口提供了一种用于访问任意容器中各个元素的抽象机制。这是一种很明智的选择,但要想建立一个全面的集合类库还需要大量的时间和高超的技能。

随着Java SE 1.2的问世,设计人员感到是推出一组功能完善的数据结构的时机到了,面对一大堆相互矛盾的设计策略,他们希望让类库规模(STL)小且易于学习,而不希望像C++的标准模板库那样的复杂,但却又希望得到STL率先推出的泛型算法所具有的优点,他们希望将传统的类融入新的框架中,与所有的集合类设计者一样,他们必须做出一些艰难的选择,于是,他们在整个设计过程中,做出了一些独具特色的设计决定。

为什么会存在容器类?容器类(集合类)可以存储多个数据,既然数组可以存储多个数据,那为什么还要定义容器类?

因为数组存在一些弊端:

长度是不可变的,一旦数线初始化之后,长度是固定的;

在N个地方需要存储多个数据,都得专门去编写数组的操作方法,如此一来,没有体现DRY原则;

即使每一个人都要使用到数组类,但是不同的人定义的类名和方法名是不同的,实现细节也是参差不齐的。

什么是集合框架?

尽管上面讲到的容器类非常好用,但是却不能集中和统一管理。集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口,接口的实现和对集合运算的算法(底层都对应着某一种数据结构的算法)。

为什么需要集合框架(把集合框架的类和接口都放在java.util包中)?

提供功能的复用;

让程序猿专业于业务的开发,而不是数据结构和算法。

ba35f29170a075c67146863d6e14736c.png

Java集合框架

常用的框架接口规范:

Set(集):集合的对象不按特定方式排序,不允许元素重复;

List(列表):集合中的对象按照索外位置排序,允许元素重复;

Map(映射):集合中每一个元素都包含一对key和value对象,不允许key对象重复,值 对象可以重复。

1e5addaa0a37db07348f70209f287761.png

常用的集合类

3f97ee5546474e2202b952b5e864daf2.png

文章来源于: 酱豆解说搞笑,版权归原作者所有,如有侵权,请联系 guanwang@163yun.com 删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于解决Permission is only granted to system apps

一句话,clean一下这个Project!就OK了…… 不要被假象迷惑!转载于:https://www.cnblogs.com/wytings/p/4156038.html

js splice方法_我用JS刷LeetCode | Day 8

如有兴趣,微信搜索「九零后重庆崽儿」,我们一起学前端。删除排序数组中的重复项:说明:现阶段的解题暂未考虑复杂度问题首发地址:我用JS刷LeetCode | Day 8​www.brandhuang.comQuestion:Given an array nums and a val…

java 删除目录下所有文件_Java删除文件、目录及目录下所有文件的方法实例

前言本文主要实现的功能是删除某个目录及目录下的所有子目录和文件,涉及到的知识点:File.delete()用于删除“某个文件或者空目录”!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除。具体代码示例如下:imp…

js 根据掩码位计算可用ip地址_变长子网掩码:轻松分配IP地址(下)

Hello,World.如约而至土土来更文咯[吐舌]图1首先先揭晓一下上一篇文章的答案那就是192.168.1.0/24与192.168.2.0/24不能ping通192.168.1.0/16与192.168.2.0/16能ping通图2还记得土土的提示吗?网络号相同则能够ping通那么根据/24可以看出这两个IP地址有24个网络号,即…

edittext实现自动查询,刷新listview

mEdittextqueryvalue.addTextChangedListener(new TextWatcher() {Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {/** 从本地数据库查询 */query s.toString(); //s是edittext编辑的内容isaddfalse;pageindex0;refreshView(type, que…

java rsaprivatekey_用ssh-keygen生成的公钥和私钥如何在java中转为RSAPublicKey和RSAPrivateKey...

公钥和私钥是用"ssh-keygen -t rsa"生成的,我把生成的公钥以字符串的形式传入下面的函数(从网上找的)就会报错。public static PublicKey string2PublicKey(String pubStr) throws Exception{ByteBuffer byteBuffer ByteBuffer.wrap(Base64.getDecoder().…

python字典中的值只能是字符串类型_python字典key不能是可以是啥类型

python中字典的key不能是可变类型。字典可存储任意类型对象,其中值可以取任何数据类型,但键必须是不可变的,如字符串、数字或元组。语法格式:【d {key1 : value1, key2 : value2}】。字典是另一种可变容器模型,且可存…

conda指定路径_导出不带前缀变量的conda环境,该变量显示executab的本地路径

为了在我的团队中提高可重复性,我在新创建的存储库中导出了一个conda环境文件,该存储库运行conda env export > environment.yml。在我的想法是让我的同事下载repo并运行conda env create -f environment.yml并准备好使用代码。在然而,我的…

未定义函数或变量_变量提升:JavaScript是顺序执行,为什么变量在定义之前执行不会报错而是报Underfined...

showName() console.log(myname) var myname hhh function showName() {console.log(函数showName被执行); }按照JavaScript 是按顺序执行的逻辑来理解的话,当执行到第 1 行的时候,由于函数 showName 还没有定义,所以执行应该会报错&#xf…

html背景图片大小控制

背景图尺寸(数值表示方式): #background-size{ background-size:200px 100px; } 背景图尺寸(百分比表示方式): #background-size{ background-size:30% 60%; } 背景图尺寸(等比扩展图片来填满元素,即cover值): #background-size{ …

java break递归_【Java】递归总结

摘要:大师 L. Peter Deutsch 说过:To Iterate is Human, to Recurse, Divine.中文译为:人理解迭代,神理解递归。毋庸置疑地,递归确实是一个奇妙的思维方式。对一些简单的递归问题,我们总是惊叹于递归描述问…

python3 urllib3文档_python urllib3

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

[翻译] RDVTabBarController

RDVTabBarController https://github.com/robbdimitrov/RDVTabBarController 效果: Supports iPad and iPhone 支持iPad与iPhoneSupports landscape and portrait orientations 支持横竖屏切换动画Can be used inside UINavigationController 可以用在UINavigationC…

C# 通过ImportNode AppendChild方法合并XmlDocument,XML转为DataTable

C# 通过ImportNode AppendChild方法合并XmlDocument,XML转为DataTable var doc1 new XmlDocument(); var doc2 new XmlDocument();XmlNode root1 doc1.DocumentElement;doc2.Load(new XmlNodeReader(myXmlNode2));foreach (XmlNode node in doc2.DocumentElement…

内存位置访问无效 midas.dll_java并发之内存模型

作者:killianxu来源:https://www.cnblogs.com/killianxu/p/11665903.htmljava内存模型知识导图一 并发问题及含义并发编程存在原子性、可见性、有序性问题。原子性即一系列操作要么都执行,要么都不执行。 可见性,一个线程对共享变量的修改&am…

java 字符串指定编码输出_java对字符的编码处理

在java应用软件中,会有多处涉及到字符集编码,有些地方需要进行正确的设置,有些地方需要进行一定程度的处理。1. getBytes(charset)这是java字符串处理的一个标准函数,其作用是将字符串所表示的字符按照charset编码,并以…

python访问数据库如何解决高并发_使用 Python 和 Oracle 数据库实现高并发性

随着趋势发展的核心转向更多而不是更快发展,最大限度地提高并发性的重要性日益凸显。并发性使得编程模式发生了新的转变,可以编写异步代码,从而将多个任务分散到一组线程或进程中并行工作。如果您不是编程新手并且很熟悉 C 或 C,您…

过长内容分成了多次发送 问题 LengthFieldBasedFrameDecoder使用

这个问题比较常见,在高并发大数据传输时数据分包接收会乱 在org.jboss.netty.handler.codec.frame包中,有LengthFieldBasedFrameDecoder类用来解析带有长度属性的包,只要我们在传输协议中加入包的总长度就行了(也许有更好的方法&a…

java为什么需要枚举_java – 什么是枚举,为什么它们有用?

当变量(特别是方法参数)只能从一组可能的值中取出一个时,应该总是使用枚举。示例将是类型常量(合同状态:“永久”,“临时”,“学徒”)或标志(“立即执行”,“延迟执行”)。如果使用枚举而不是整数(或字符串代码)&#…

python args kw_Python基础-参数魔法,*args,**kwags

最近在带着新成员一起学习《Python基础教程》这本书,看到参数魔法的时候突然感觉好多术语真的不知道呀~Python参数:位置参数,关键字参数经常看Python我们肯定经常看见,下面类似这样的代码def add(x,y):return xy# 1add(1,2)# 2add(x1,y2)上面的两段代码结…