Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可容纳多个无限制值的二维数组_Java_Arrays_Multidimensional Array - Fatal编程技术网

Java 可容纳多个无限制值的二维数组

Java 可容纳多个无限制值的二维数组,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我对java非常陌生,目前正在开发一个不那么简单的web浏览器应用程序,在这个应用程序中,我想用2D数组设置记录一个永久历史文件,其中有3列包含“查看日期”、“URL”、“此URL以前被查看过多少次” 目前,我有一个临时解决方案,只保存“URL”,它也用于使用ArrayList的“后退,前进”功能 private List tempHistory = new ArrayList(); 我正在阅读Java文档,但我无法编写一个解决方案,除非我忽略了一个明显的问题:没有2D数组像Python中的A

我对java非常陌生,目前正在开发一个不那么简单的web浏览器应用程序,在这个应用程序中,我想用2D数组设置记录一个永久历史文件,其中有3列包含“查看日期”、“URL”、“此URL以前被查看过多少次”

目前,我有一个临时解决方案,只保存“URL”,它也用于使用ArrayList的“后退,前进”功能

private List tempHistory = new ArrayList();

我正在阅读Java文档,但我无法编写一个解决方案,除非我忽略了一个明显的问题:没有2D数组像Python中的ArrayList那样灵活

根据您的描述,听起来您不需要2D阵列。您只有一个维度,但数据类型很复杂,对吗

因此,为查看的日期定义一个
HistoryItem
类或具有
Date
属性的对象,为URL定义
URL
,为查看计数定义
int

然后您只需要一个
列表history=new ArrayList()


我不认为您真的需要一个类似2D数组的东西的原因是它只能保存一种数据类型,而且这里显然有几种数据类型,比如日期和计数。但是,如果您真的想要一个类似于表的抽象,请尝试Guava。

不,Java中没有内置的2D数组类型(除非您使用基本数组)


您可以只使用列表列表(
list
)-但是,我认为使用您放入列表中的自定义类型几乎总是更好的。在您的例子中,您需要创建一个类
HistoryEntry
(带有“查看日期”字段、URL等),并使用
List
。这样,您就可以获得正确类型给您带来的所有好处(类型检查、IDE中的完成、将方法放入类中的能力等等)。

那么您打算如何浏览历史记录呢?如果以后要搜索每个url的历史记录,那么ArrayList方法可能效率不高

我更喜欢用URL作为键的地图

Map<Url,UrlHistory> browseHistory = new HahMap<Url,UrlHistory> ();
Map browseHistory=new HahMap();

UrlHistory将包含您希望与url关联的所有字段,如页面被访问的次数和全部。

ArrayList
列表
。谢谢,我认为您的方法听起来最合适,但为了澄清我的理解,我简单地设置了一个类来存储三个变量,将它们指定为一行并保存到二进制文件,而不需要数组?我关心的是在数据类型加载后如何维护它们以便于排序。我会尝试一下并报告结果,谢谢。你提到了几个不同的问题。如果要将这些对象保存到二进制文件中,请查看
Serializable
。如果希望它们是可排序的,请考虑实现
可比较的
,或者制作一个
比较器