2D数组,可以保持多个值,没有限制

时间:2013-04-06 23:45:26

标签: java arrays multidimensional-array

对于目前正在开发一个不那么简单的Web浏览器应用程序的java,我很陌生,在这个应用程序中我想记录一个带有2D数组设置的永久历史文件,其中3列包含“Date Viewed”,“URL”, “此网址之前已被查看了多少次。”

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

private List tempHistory = new ArrayList();

我正在阅读Java文档,但我不能把解决方案放在一起,除非我错过了很明显没有2D数组像Python一样灵活的ArrayList?

3 个答案:

答案 0 :(得分:0)

根据您的描述,听起来并不像您需要2D阵列。你只有一个维度 - 但是复杂的数据类型,对吧?

因此,定义一个HistoryItem类或具有Date属性的日期查看日期,URL表示网址,int表示查看次数。

然后你只想要一个List<HistoryItem> history = new ArrayList<HistoryItem>()

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

答案 1 :(得分:0)

不,Java中没有内置的2D数组类型(除非你使用原始数组)。

可以只使用列表列表(List<List>) - 但是,我认为使用您放入列表的自定义类型几乎总是更好。在您的情况下,您将创建一个类HistoryEntry(包含“查看日期”,URL等字段),并使用List<HistoryEntry>。这样,您就可以获得正确类型为您提供的所有好处(类型检查,在IDE中完成,将方法放入类中等等)。

答案 2 :(得分:0)

您打算如何浏览历史?如果您想稍后搜索每个URL的历史记录,那么ArrayList方法可能效率不高。

我宁愿选择带有网址的地图作为密钥。

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

UrlHistory将包含您要与网址关联的所有字段,例如否。时间页面被访问和所有。