我是相当新的java目前工作在一个不太简单的web浏览器应用程序中,我想记录一个永久的历史记录文件与一个2D数组设置与3列包含"日期查看","URL", "多少次此URL已被查看之前"。
目前我有一个临时的解决方案,只保存"URL",这也用于"后退,前进"的功能使用数组列表。
private List tempHistory = new ArrayList();
我正在阅读Java文档,但我不能把一个解决方案放在一起,除非我错过了明显的二维数组没有像Python那样灵活的数组列表?
从你的描述听起来不像你需要一个2D数组。你只有一个维度——但是复杂的数据类型,对吧?
所以定义一个HistoryItem
类或具有Date
属性的东西用于查看的日期,URL
用于URL, int
用于查看数。
那么你只是想要一个List<HistoryItem> history = new ArrayList<HistoryItem>()
。
我不认为你真的想要一个2D数组的原因是,它只能保存一种数据类型,你显然有几个数据类型在这里工作,像日期和计数。但是如果你真的想要一个类似于表的抽象,可以试试Guava的Table。
不,Java中没有内置的2D数组类型(除非你使用原始数组)。
你可以只是使用列表的列表(List<List>
) -然而,我认为它几乎总是更好的使用自定义类型,你把列表。在您的例子中,您将创建一个类HistoryEntry
(包含"查看日期"、URL等字段),并使用List<HistoryEntry>
。这样,您就可以获得适当类型给您带来的所有好处(类型检查、IDE中的补全、将方法放入类中的能力等)。
那么您打算如何浏览历史呢?如果你想在以后搜索每个url的历史记录,那么ArrayList方法可能不是很有效。
我更喜欢用URL作为键的Map。
Map<Url,UrlHistory> browseHistory = new HahMap<Url,UrlHistory> ();
UrlHistory将包含您想与url(如no)关联的所有字段。