当前位置:  开发笔记 > 编程语言 > 正文

Java中是否有可扩展的对象引用列表?

如何解决《Java中是否有可扩展的对象引用列表?》经验,为你挑选了1个好方法。

在Java中,我们总是可以使用数组来存储对象引用.然后我们有一个ArrayList或HashTable,它可以自动扩展为存储对象.但有没有人知道一种自动扩展的对象引用数组的本地方式?

编辑:我的意思是我想知道Java API是否有一些类能够存储对象的引用(但不存储实际对象,如XXXList或HashTable)和自动扩展的能力.



1> Kevin Day..:

根据它们的定义,Java数组是固定大小的.如果需要自动增长,则使用XXXList类.

编辑 - 问题已经澄清了一点

当我第一次开始学习Java(来自C和C++背景)时,这可能是让我绊倒的第一件事.希望我能解释一下.

与C++不同,Java中的Object数组存储对象.它们存储对象引用.

在C++中,如果您声明类似于:

String myStrings[10];

你会得到10个String对象.在这一点上,做一些像println(myStrings [5] .length)这样的事情是完全合法的. - 你得到'0' - String的默认构造函数创建一个长度为0的空字符串.

在Java中,当您构造一个新数组时,您将获得一个可容纳10个String引用的空容器.所以电话:

String[] myStrings = new String[10];
println(myStringsp[5].length);

会抛出一个空指针异常,因为你还没有实际将String引用放入数组中.

如果您来自C++背景,请将新的String [10]视为等同于C++中的new(String*)[10].

因此,考虑到这一点,应该相当清楚为什么ArrayList 自动扩展对象数组的解决方案(事实上,ArrayList是使用简单数组实现的,内置增长算法,根据需要分配新的扩展数组,将内容从旧复制到新的).

实际上,我们使用数组的情况实际上相对较少.如果您正在编写容器(类似于ArrayList或BTree),那么它们很有用,或者如果您正在进行大量低级字节操作 - 但是在大多数开发发生的级别上,使用其中一个Collections类到目前为止是首选的技术.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有