如果一个程序只包含固定数量的且其生命期都是己知的对象. 那么这是一个非常简单的程序。

通常,程序总是根据运行时才知道的某些条件去创建新对象。在此之前,不会知道所需对象的数量,甚至不知道确切的类型。为解决这个普遍的编程问题,需要在任意时刻和任意位置创建任意数量的对象。所以,就不能依靠创建命名的引用来持有每一个对象,因为你不知道实际上会需要多少这样的引用。

大多数语言都提供某种方法来解决这个基本问题。Java 有多种方式保存对象(应该说是对象的引用)。例如数组,它是编译器支持的类型。数组是保存一组对象的最有效的方式,如果你想保存一组基本类型数据,也推荐使用这种方式。但是数组具有固定的尺寸,而在更一般的情况中, 你在写程序时并不知道将需要多少个对象, 或者是否需要更复杂的方式来存储对象,因此数组尺寸固定这一限制显得过于受限了。

Java 实用类库还提供了一套相当完整的容器类来解决这个问题,其中基本的类型是ListSet、 QueueMap. 这些对象类型也称为集合类,但由于 Java 的类库中使用了Collection这个名词来指代该类库的一个特殊子集,所以我使用了范围更广的术语 “容器” 称呼它们。容器提供了完善的方法来保存对象,你可以使用这些工具来解决数量惊人的问题。

容器还有其他一些特性。例如,Set对子每个值都只保存一个对象,Map是允许你将某些对 象与其他一些对象关联起来的关联数组,Java容器类都可以自动地调整自己的尺寸。因此,与数组不同,在编程时,你可以将任意数量的对象放置到容器中,并且不需要担心容器应该设置为多大。
即使在Java中没有直接的关键字支持气容器类仍旧是可以显著增强你的编程能力的基本工具。

2017-12-31 内容来自《Java编程思想》

Java容器概述的更多相关文章

  1. 1.java容器基本内容

    目录 java容器概述 1.collection接口 (1)collection接口方法 (2)set接口实现类 (3)list接口实现类 (4)queue接口实现类 2.map接口 java容器概述 ...

  2. Java 容器系列总结

    为什么要使用集合 当我们需要保存一组类型相同的数据的时候,我们应该是用一个容器来保存,这个容器就是数组,但是,使用数组存储对象具有一定的弊端, 因为我们在实际开发中,存储的数据的类型是多种多样的,于是 ...

  3. java容器一:Collection概述

    Collection概览 java容器有两类,第一类是Collection,存储的是对象的集合:第二类是Map,存储的是键值对(两个对象以及它们之间的对应关系)的集合 Collection接口下面有三 ...

  4. 《java集合概述》

    JAVA集合概述: Collection: |---List有序的:通过索引就可以精确的操作集合中的元素.元素是可以重复的. List提供了增删改查的动作. 增加add(element) add(in ...

  5. 工作随笔—Java容器基础知识分享(持有对象)

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

  6. Java集合--概述

    目录 Java集合--概述 摘要 图示 正文 Java集合--概述 摘要 ​ 本文主要介绍集合的整体概念,并作为接下来Java集合实现类讲解的索引. 图示 ​ 这是在网上看到了这样一张图,感觉很清晰, ...

  7. Java集合----概述、Collection接口、Iterator接口

    Java 集合概述 Java 集合就像一种容器,可以把多个对象的引用放入容器中. Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组 Java 集合可分为 Set.Li ...

  8. Java集合——概述

    Java集合——概述 摘要:本文主要介绍了几种集合类型以及有关的一些知识点. 集合类图 类图 类图说明 所有集合类都位于java.util包下.Java的集合类主要由两个接口派生而出:Collecti ...

  9. Java集合概述(上)

    Java集合概述(上) 前言 先说说,为什么要写这么一篇博客(我总是喜欢写原因).因为最近到年底了,正好又要准备面试,所以在做各方面的技术总结.而Java集合是Java非常重要的一部分,自己前前后后也 ...

随机推荐

  1. 解题:CTSC 2017 吉夫特

    题面 首先有个结论:$C_n^m$为奇数当且仅当$m$是$n$的一个子集 于是从后往前推,记录每个数出现的位置,然后对每个位置枚举子集统计在它后面的贡献即可 #include<cstdio> ...

  2. 循环神经网络 RNN

    随着科学技术的发展以及硬件计算能力的大幅提升,人工智能已经从几十年的幕后工作一下子跃入人们眼帘.人工智能的背后源自于大数据.高性能的硬件与优秀的算法的支持.2016年,深度学习已成为Google搜索的 ...

  3. centos 前端环境搭建

    Node.js 安装 wget 下载安装 yum -y install gcc make gcc-c++ openssl-devel wget node v6.11.0 下载 wget https:/ ...

  4. Bootstrap 排版 文本

    小一点浅一点(设置文本为父文本大小的 85%)<small> .small 大一点粗一点 行高高一点 .lead 粗  <strong> 斜体 <em> 添加背景色 ...

  5. oracle,sqlserver,mysql常见数据库jdbc连接

    发现JDBC连接字符串总是容易忘记,特此整理一下常用的几种数据的连接 ORACLE: /** * ORACLE * */ public static Connection getOracleConne ...

  6. Ubuntu+NDK编译支持HTTPS的libcurl

    参考文章:1.NDK环境配置 http://blog.csdn.net/smfwuxiao/article/details/65877092.libcurl的配置修改 http://piggyq.co ...

  7. DES解码

    DES加解密算法是一个挺老的算法了,现在给出它的C语言版. des.h #ifdef __cplusplus extern "C" { #endif ]); char* des(c ...

  8. OpenCV---像素运算

    像素运算 分为算术运算和逻辑运算 算术运算: 加减乘除 调节亮度 调整对比度 逻辑运算: 与或非 遮罩层控制 一:算术运算 import cv2 as cv import numpy as np de ...

  9. springboot项目启动成功后执行一段代码的两种方式

    springboot项目启动成功后执行一段代码的两种方式 实现ApplicationRunner接口 package com.lnjecit.lifecycle; import org.springf ...

  10. 解决vue路由与锚点冲突

    传统的锚点定位会与vue-router中的路由设置存在冲突,解决方法自定义锚点跳转: html: <ul> <li><a href="" @click ...