简述Java编程语言对象的容纳

 更新时间:2017年09月18日 11:20:24   作者:Core Hua  
这篇文章主要对Java编程思想中对象的容纳进行了一个总体的介绍,具有一定的参考价值,需要的朋友可以了解下。

如果一个程序只含有数量固定的对象,而且已知它们存在的时间,那这个程序是相当简单的。

数组

容纳对象有很多方式,数组是其中最为普遍的一种,它主要有如下两个特点:效率和类型。对于Java来说,为保存和访问一系列对象(实际是对象的句柄),最有效率的方法莫过于数组。数组实际是一个简单的线性序列,因此访问速度非常的快,但是它也存在一些限制,如数组的大小是固定的,并且不可以在“存在时间”内发生改变。
对于基本数据类型构成的数组,其运作类型跟对象数组相似,所不同的是前者里面保存的不是对象的句柄,而是实际的数值。

集合

编程的时候,通常不知道究竟需要保存多少对象,有时甚至想用更复杂的方式来保存对象,为解决这样的问题,Java提供了几种“集合类”:Vector(矢量),BitSet(位集),Stack(堆栈)以及HashTable(散列表)。

集合的缺点:丢失了类型信息。它容纳的实际上是类型为Object的对象的句柄。

枚举器(迭代器)

用集合保存对象后再访问,需要事先知道集合中对象的准确类型,否则使用的过程中会出异常。而迭代器可以解决这个问题。迭代器是一个对象,其作用是遍历一系列对象,并选择那个序列中的每个对象,同时不让客户程序员知道或关注那个序列的基础结构。

Java中的Enumeration就是一个典型的迭代器,主要用来干如下事情:

(1)用一个名为Elements的方法要求集合为我们提供一个Enumeration,首次调用其NextElements时,这个Enumeration会返回序列中的第一个元素。

(2)用NextElements获取下一个对象。

(3)用HasMoreElements检查是否有更多的对象。

集合的类型:

1. Vector

Vector 类可实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。

2. BitSet

BitSet实际是由“二进制位”构成的一个Vector。如果希望高效率地保存大量“开-关”信息,就应使用BitSet。位set 的每个组件都有一个 boolean 值。用非负的整数将 BitSet 的位编入索引。可以对每个编入索引的位进行测试、设置或者清除。通过逻辑与、逻辑或和逻辑异或操作,可以使用一个 BitSet 修改另一个 BitSet 的内容。 默认情况下,set 中所有位的初始值都是 false。

3. Stack

Stack也称为“后入先出”集合。Java中的Stack类继承自Vector类,它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的 search 方法。

4. HashTable

哈希表是一种重要的存储方式,也是一种常见的检索方法。其基本思想是将关系码的值作为自变量,通过一定的函数关系计算出对应的函数值,把这个数值解释为结点的存储地址,将结点存入计算得到存储地址所对应的存储单元。检索时采用检索关键码的方法。现在哈希表有一套完整的算法来进行插入、删除和解决冲突。在Java中哈希表用于存储对象,实现快速检索。

总结

以上所述就是本文关于Java编程中对象的容纳的全部介绍,希望对大家有所帮助。

详细实例可以参考:Java编程思想对象的容纳实例详解

相关文章

  • Swagger3.0 整合spring boot2.7x避免swagger2.0与boot2.7冲突问题

    Swagger3.0 整合spring boot2.7x避免swagger2.0与boot2.7冲突

    这篇文章主要介绍了Swagger3.0 整合spring boot2.7x避免swagger2.0与boot2.7冲突问题,通过注释掉2.0引入的俩包,直接引入3.0,文中结合实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2023-10-10
  • Java定时器Timer简述

    Java定时器Timer简述

    本文主要介绍了Java定时器Timer的相关知识,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Java实现线程的四种方式解析

    Java实现线程的四种方式解析

    这篇文章主要介绍了Java实现线程的四种方式解析,线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程,一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序,需要的朋友可以参考下
    2023-10-10
  • 剑指Offer之Java算法习题精讲排列与N叉树

    剑指Offer之Java算法习题精讲排列与N叉树

    跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化
    2022-03-03
  • Elasticsearch索引库和文档的相关操作详细指南

    Elasticsearch索引库和文档的相关操作详细指南

    这篇文章主要给大家介绍了关于Elasticsearch索引库和文档的相关操作的相关资料,Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 探索Java中的equals()和hashCode()方法_动力节点Java学院整理

    探索Java中的equals()和hashCode()方法_动力节点Java学院整理

    这篇文章主要介绍了探索Java中的equals()和hashCode()方法的相关资料,需要的朋友可以参考下
    2017-05-05
  • java webservice上传下载文件代码分享

    java webservice上传下载文件代码分享

    这篇文章主要为大家详细介绍了java webservice上传下载文件代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 你应该知道的21个Java核心技术

    你应该知道的21个Java核心技术

    Java的21个核心技术点,你知道吗?这篇文章主要为大家详细介绍了Java核心技术,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Java中@DateTimeFormat注解与@JsonFormat注解的使用方式

    Java中@DateTimeFormat注解与@JsonFormat注解的使用方式

    这篇文章主要介绍了Java中@DateTimeFormat注解与@JsonFormat注解的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • spring boot 项目中使用thymeleaf模板的案例分析

    spring boot 项目中使用thymeleaf模板的案例分析

    这篇文章主要介绍了spring boot 项目中使用thymeleaf模板的案例分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09

最新评论