摇滚java游戏_java 集合类

一、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允许重复。

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

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

相关文章

女人在想什么

1 行吧,这样至少回家不用给洗jiojio了。2 世纪难题——《女人在想什么》3 方法总比困难多4 跟瓜摊大哥学切西瓜5 你是怎样上去的?6 摄影师:我是因为没有对手才做摄影的!7 有了女儿后,儿子的处境好像不太妙8 想知道白色…

linux打包压缩命令汇总

tar命令 [rootlinux ~]# tar [-cxtzjvfpPN] 文件与目录 ....参数:-c :建立一个压缩文件的参数指令(create 的意思);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意&…

zoj2271 Chance to Encounter a Girl(DP)

/* 概率计算:按时间为阶段,每个点由上一阶段周围的四个点来维护。 注意事项:1.时间O(N^3*T),在问题的边缘时间,所以打表计算。     2.关于概率的求解,如果遇到就结束了&#…

12 个问题搞懂 Redis

都说学习需要带着问题,带着思考进行学习,下面就以问题的形式来学习下 Redis 。1、什么是 Redis ?Redis 是一个高性能的 key-value 数据库;作者来自意大利西西里岛的 Salvatore Sanfilippo ;Redis 使用 ANSI C 语言编写…

sql企业管理器_Valentina Studio for mac(开源数据库管理器)

Valentina Studio for mac是您使用MySQL,MariaDB,SQL Server,PostgreSQL,SQLite和Valentina DB数据库的通用数据库管理工具。valentina studio mac下载可让您连接所有主要数据库,运行查询并生成图表,以更好…

java程序编六角星_跨平台移动端解决方案—Weex

跨端方案背景一1起因由于客户端Webview内嵌H5的各种受限,例如性能差、JS执行效率低以及伴随着大量的机型兼容问题,于是有了各种混合跨端开发解决方案:Hybrid、React-Native、Weex、Flutter、小程序、快应用等。2优势我们知道各大应用市场对于…

[转]常用Delphi开发资料网址

发现一个很好的个人网站,该网站收集了大量有关Delphi开发资料的网址链接,值得收藏。 相关Delphi链接如下: Books, Tutorials Tomes of Delphi: Algorithms and data structures by Julian M. Bucknall , Source http://www.boyet.com/Code/To…

使用微软WPF技术开发产品优势究竟在那里

2008年在世界经济历史上是一个不平凡的一年,在这一年中,美国的五大投资银行有两家破产。金融危机席卷全球,美国的失业率在过去的一年从4%飙升到了10%,有些城市的失业率甚至高达20%;加拿大的就业数字也是惨不忍睹&#…

父类可以调用子类的方法吗_python类的继承、多继承及查找方法顺序

讲解类的继承,先用无__init__()方法的类讲解,会更容易理解分三部分讲解1、单继承(无__init__()方法)继承方式:子类(父类):方法重写:防止执行父类的方法。不想继承父类的某个方法,就自己重写一个一样名称的方法执行父类…

解决ASP.NET Core部署到IIS,更新项目另一个程序正在使用此文件,进程无法访问...

问题部署到IIS上的ASP.NET Core项目,在更新的时候会进程占用的错误解决思路初步解决方案:1,关闭应用程序池2,关闭网站3,更新项目缺点:网站没法访问,部署项目停的时间过长答案查询官方文档后&…

下面选项能正确表示JAVA_模拟试题2

Java语言程序设计模拟试题二一、选择题:共20小题,每小题1分,满分20分:请将答案填入题后括号中。1.以下的选项中能正确表示Java语言中的一个整型常量的是 ( )A) 12. B) -20 C) 1,000 D) 4 5 62。下列的变量定义中&#…

hdu 1671

Trie树,题目不难,但还是WA了一次,没有考虑后输入的字符串是前输入的字符串的前缀的情况,真是太粗心了。不过做了几道Trie树的题目以后,代码写得还是比较通用了,慢慢再改进吧 /* * hdu1671/win.c * Created …

使用Redis Stream来做消息队列和在Asp.Net Core中的实现

Redis - Wikipedia写在前面我一直以来使用redis的时候,很多低烈度需求(并发要求不是很高)需要用到消息队列的时候,在项目本身已经使用了Redis的情况下都想直接用Redis来做消息队列,而不想引入新的服务,kafka和RabbitMQ等&#xff…

java基础代码下载_Java基础(一)(示例代码)

1. 概述1.1 什么是Java语言Java语言:面向对象的程序设计语言与机器无关的二进制格式的类文件Java虚拟机(用来执行类文件)完整的软件程序包(跨平台的API和库)1.1.1 Java语言特点语法简单,功能强大分布式与安全性与平台无关解释、编译两种运行方式多线程动…

windows挂载ext4_使用 UEFI 双启动 Windows 和 Linux | Linux 中国

这是一份在同一台机器上设置 Linux 和 Windows 双重启动的速成解释,使用统一可扩展固件接口(UEFI)。来源:https://linux.cn/article-12891-1.html作者:Alan Formy-duval译者:郑(本文字数&#x…

Master DNS服务的搭建

很多企业都通过Linux来搭建自己的DNS服务器来提高网路效率,在此我们来学习如何搭建Master DNS服务器。首先,确定是否搭建yum仓库,并有软件包可用,如DVD光盘是否挂载。一、安装DNS服务所需要的软件包DNS所需要的软件包有&#xff1…

oh,我的老伙计,你看看这近五十个dapr视频

oh,我的老伙计,你看看这近五十个 dapr 视频。这不就是你想要的视频资料吗?快来捡走吧!开始了,但是没完全开始 Dapr 是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状…

极速理解设计模式系列:2.观察者模式(Observer Pattern)

4个角色:被观察者(Subject/目标对象接口),具体被观察者(ConcreteSubject/具体目标对象),观察者(Observer),具体观察者(ConcreteObserver) 被观察者(Subject/目标对象接口):目标对象的抽象接口 …

java try finally connectoin close_Java SocketChannel類代碼示例

本文整理匯總了Java中io.netty.channel.socket.SocketChannel類的典型用法代碼示例。如果您正苦於以下問題:Java SocketChannel類的具體用法?Java SocketChannel怎麽用?Java SocketChannel使用的例子?那麽恭喜您, 這裏精選的類代碼…

被娱乐在线报道的“唐骏造假门事件”

最近全球最热的是南非的世界杯,而在中国最近比较热的是另外一个事情。。。话说那天晚上回家已经很晚,照例的,家里的毛孩子歪歪斜斜的睡在床的角落里,一边是正在看节目的老婆吃着零食,我随便瞄了一眼,是新闻…