如何在不使用内置数组的情况下创建数组?

时间:2015-08-01 23:34:54

标签: java arrays

我是编程新手,正在学习java。我想知道,如果不使用内置的数组系统,你将如何编写代表数组的类?我试过,发现我不知道怎么做。它不一定是类型的通用,也许有人可以解释如何编程int数组?

编辑: 很多有用的反馈。如果不可能像默认情况那样编程相同类型的数组,那么语言是如何做到的呢?另外,我并不关心语法,只关心功能。我理解使用链接列表等其他类似的集合,但它们并不完全相同。

2 个答案:

答案 0 :(得分:4)

通过创建链接列表(如alfasin所述)可以创建一个功能几乎完全相同的类,但是您无法模拟所有数组的功能和性能特征。也就是说,您永远不能模拟Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1 ------- Bitcast requires both operands to be pointer or neither %111 = bitcast %CSo19NSMutableURLRequest* %110 to i64, !dbg !44642 Bitcast requires both operands to be pointer or neither %144 = bitcast %CSo19NSMutableURLRequest* %143 to i64, !dbg !44642 Bitcast requires both operands to be pointer or neither %275 = bitcast %CSo19NSMutableURLRequest* %274 to i64, !dbg !44642 LLVM ERROR: Broken function found, compilation aborted! 语法或数组的常量访问时间(算法术语中的O(1))。

Java虚拟机通过访问原始内存来完成它。在Java中实际上不可能这样做(在技术上可以通过使用sun.mics.unsafe在Java中实现,但是 HIGHLY 不鼓励),但是可以使用汇编/原始指令,并且扩展,通过某些语言,如C,C ++等。

答案 1 :(得分:1)

您可以创建一个类并实现一些与数组相关的接口,即ListIterable。这将是这样的:

public class MyArray<T> implements List<T> {
    //your implementation here
}

如果您是Java新手,您可能不知道它们是什么。它被称为泛型。如果你不想玩泛型,你可以这样做:

public class MyArray implements List<Object> {
        //your implementation here
}

如果您使用的是eclipse,则只需单击快速修复中的“添加未实现的方法”即可。有关如何实现List的详细信息,有很多教程。我只是给你一个通用指南。