0

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

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

private List tempHistory = new ArrayList();

我正在阅读 Java 文档,但我无法组合出一个解决方案,除非我错过了显而易见的,没有像 Python 中那样灵活的 ArrayList 的二维数组?

4

3 回答 3

0

根据您的描述,听起来您不需要二维数组。你只有一个维度——但是是复杂的数据类型,对吧?

因此,为查看日期、URL和查看次数定义一个HistoryItem类或具有属性的东西。DateURLint

那么你只想要一个List<HistoryItem> history = new ArrayList<HistoryItem>().

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

于 2013-04-06T23:52:18.780 回答
0

不,Java 中没有内置的二维数组类型(除非您使用原始数组)。

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

于 2013-04-06T23:52:21.140 回答
0

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

我更喜欢以 URL 为键的 Map。

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

UrlHistory 将包含您要与 url 关联的所有字段,例如 no。次页面被访问和所有。

于 2013-04-07T02:40:23.067 回答