Java编程思想-容器_java容器 关系图 java编程思想-程序员宅基地

技术标签: linkedlist  java  容器  arraylist  Java编程思想  hashmap  

通常,程序总是根据运行时才知道的某些条件去创建新对象。在此之前,不会知道所需对象的数量,甚至不知道确切的类型。为解决这个普遍的编程问题,需要在任意时刻和任意位置创建任意数量的对象。

Java有多种保存对象(应该说是对象的引用)。数组是保存一组对象的最有效的方式,但是数组具有固定的尺寸,而在更一般的情况中,你写程序并不知到需要多少个对象,或者是否需要更复杂的方式来存储对象,因此数组尺寸这一限制显得过于受限了。

Java实用类库提供了一套相当完整的容易类来解决这个问题,其中基本的类型是List、Set、Queue和Map。即使在Java中没有直接的关键字支持,容器类仍然是可以显著增强你的编程能力的基本工具。

11.1 泛型和类型安全的容器

要想定义用来保存Apple对象的ArrayList,你可以声明ArrayList <Apple>
,而不仅仅只是ArrayList,其中尖括号括起来的是类型参数(可以有多个),它指定了这个容器实例可以保存的类型。通过使用泛型,就可以在编译期防止将错误类型的对象放置到容器中。

11.2 基本概念

Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念:

1)Collection。一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元素,而Set不能有重复元素。Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同)。

2)Map。一组成对的“键值对”对象,允许你使用键来查找值。ArrayList允许你使用数字来查找值,因此在某种意义上讲,它将数字与对象关联在了一起。映射表允许我们使用另一个对象来查找某个对象,它也被称为“关联数组”,因为它将某些对象与另外一些对象关联在了一起;或者被称为“字典”,因为你可以使用键对象来查找值对象,就像在字典中使用单词来定义一样。

11.3 添加一组元素

在java.util包中的Arrays和Collections类中都有很多实用方法,可以在一个Collection中添加一组元素。Arrays.asList()接受一个数组或是一个逗号分隔的元素列表(使用可变参数),并将其转换为一个List对象。Collections.addAll()方法接受一个Collection对象,以及一个数组或者一个用逗号分隔的列表,将元素添加到Collection中。

下面例子展示了这两个方法:

public class AddingGroup {
   
    
    public static void main(String[] args) {
   
    
        Collection<Integer> collection = new ArrayList<Integer>(Array.asList(1,2<
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ZRFWANG/article/details/113409652

智能推荐

贴一段POI导出代码----POI使用注意事项更新。20170323更新使用_import org.apache.poi.xssf.streaming.sxssfworkbook-程序员宅基地

文章浏览阅读1.2k次。在某台服务器使用SXSSFWorkbook方式报错:No space left on device。没有排查出问题,增加XSSFWorkbook方式,需要更多内存。【具体原因未找到,磁盘空间足够,为文件分配地址看起来也够,该服务器在做一个工具的测试可能频繁生成小文件,另外top中的vitr选项很高,其他程序不好停,也不方便验证问题,只好作罢】之前使用XSSFWorkbook导出太多或者太大..._import org.apache.poi.xssf.streaming.sxssfworkbook报错

Unity学习小技巧_unity怎么退出play模式-程序员宅基地

文章浏览阅读158次。Unity小技巧Play状态下保存数据Play状态下保存数据Play模式下在Inspector的Transform的右上角,点击齿轮小图标,选择Copy Component Values;退出Play模式在Inspector的Transform的右上角,点击齿轮小图标,选择Paste Component Values;..._unity怎么退出play模式

The APR based Apache Tomcat Native library which allows optimal performance in p_init the apr based apache tomcat native library wh-程序员宅基地

文章浏览阅读9.9k次。2010-7-7 12:53:31 org.apache.catalina.core.AprLifecycleListener init信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:/Program Files/Java/jre6/bi_init the apr based apache tomcat native library which allows optimal performance in production environments was not found on the java.library.path

Latex写科技论文小技巧--修改稿件_latex怎么写修改稿-程序员宅基地

文章浏览阅读5.8k次,点赞16次,收藏53次。Latex修改稿件记录一下在返修稿件时,如何较为快捷地完成 revised version 和 pure version 两个不同版本修改稿件的编辑与生成。1. 定义字体颜色的快捷命令因为在修改论文过程中,由于不同期刊的格式不一样,所涉及的cls文件配置也不尽相同,因此可能会遇到自己采样的修改命令和原始官方模板配置中命令相冲突的情况(在IEEE稿件中,用删除线标记所要删除的内容时,往往导致公..._latex怎么写修改稿

词汇总结·《雅思词汇看这本书就够了》_descent和humble-程序员宅基地

文章浏览阅读7.7k次,点赞5次,收藏11次。近来背了一本单词书《雅思词汇看这本就够了》,不过虽然背过了,但是我不知道真的够不够。我把自己认为比较难的词汇以及按照场景的单词都摘录了下来,大致有全书的百分之八十的单词。这本书最好的一方面是按照场景将词汇分类汇聚,这样你记得的词就不会是孤单的,总会有个伴的。是一本不错的单词书,优点有:(1)单词分6分、7分、8分词汇,并且按照阅读、写作、听力分类。(2)按照场景的分类方法将某一类的_descent和humble

Java实现 LeetCode 274 H指数_java求h指数-程序员宅基地

文章浏览阅读1.1w次。274. H指数给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。h 指数的定义: “h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)至多有 h 篇论文分别被引用了至少 h 次。(其余的 N - h 篇论文每篇被引用次数不多于 h 次。)”示例:输入: citations = ..._java求h指数

随便推点

【转】java.lang.LinkageError: loader constraint violation: when resolving interface method异常-程序员宅基地

文章浏览阅读1.3k次。严重: Servlet.service() for servlet jsp threw exception java.lang.LinkageError: loader constraint violation: when resolving interface method “javax.servlet.jsp.JspApplicationContext.getExpressionFactory_java.lang.linkageerror: loader constraint violation: when resolving method

vue下的checkbox控制(全选,反选,及统计选中个数)-程序员宅基地

文章浏览阅读2k次。<!DOCTYPE html><html> <head> <meta charset="UTF-8" /> <title></title> <style> body, ul, li { mar..._vue计算多选框选中的总数

get_post 攻防世界 使用burpsuite发送GET、POST请求_burpsuite把get改为post-程序员宅基地

文章浏览阅读1.8w次,点赞9次,收藏65次。题面:解题思路:由于题面中要求使用GET方式提交变量,我们可以直接在URL中直接加入/?a=1,表示a参数为1,得到如下页面。由于目前正在学习burpsuite,所以使用burpsuite来实现一下GET方式提交变量,步骤如下(省略设置代理部分):1、拦截该浏览器GET请求2、点击Action,然后Send to repeater,Repeater中有如下请求3、将请求改为如下,点击Go4、此时得到5、使用POST提交方法和GET类似,将GET改为_burpsuite把get改为post

几款实用的内网穿透工具(附加教程)_支持web访问的内网穿透软件-程序员宅基地

文章浏览阅读452次。前言本文以渗透的视角,总结几种个人常用的内网穿透,内网代理工具,介绍其简单原理和使用方法。文章目录前言1、npc1.1 简介1.2 特点1.3 使用方法2、frp2.1 简介2.2 特点2.3 使用方法2.3.1 通过 rdp 访问家里的机器2.3.2. 通过 SSH 访问公司内网机器2.3.3. 通过自定义域名访问部署于内网的 Web 服务2.3.4. 对外提供简单的文件访问服务2.4 常用功能2.4.1 统计面板(Dashboard)2.4.2 加密与压缩2.4.3 TLS2.4.4 代理限速2._支持web访问的内网穿透软件

程序猿装13指南-程序员宅基地

文章浏览阅读61次。一“工欲善其事必先利其器。”1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好。一个用来查资料,一个用来写代码。总之要显得信息量很大,效率很高。2.椅子不一定要舒服,但是一定要可以半躺着。3.大量的便签,各种的颜色的,用来记录每天要完成的事务,多多益善。沿着电脑屏幕的边框,尽量贴满,显出有很多事情的样子。4.工具书,orelly的,机...

多级队列调度和多级反馈队列调度算法的实现_多级反馈队列调度算法实验代码-程序员宅基地

文章浏览阅读1w次,点赞18次,收藏186次。多级反馈队列调度算法可以如下原理:1、设有N个队列(Q1,Q2…QN),其中各个队列对于处理机的优先级是不一样的,也就是说位于各个队列中的作业(进程)的优先级也是不一样的。一般来说,优先级Priority(Q1) > Priority(Q2) > … > Priority(QN)。怎么讲,位于Q1中的任何一个作业(进程)都要比Q2中的任何一个作业(进程)相对于CPU的优先级要高(也就是说,Q1中的作业一定要比Q2中的作业先被处理机调度),依次类推其它的队列。2、对于优先级最低的队列来_多级反馈队列调度算法实验代码