对于目前正在开发一个不那么简单的Web浏览器应用程序的java,我很陌生,在这个应用程序中我想记录一个带有2D数组设置的永久历史文件,其中3列包含“Date Viewed”,“URL”, “此网址之前已被查看了多少次。”
目前我有一个临时解决方案,只保存“URL”,它也用于使用ArrayList的“Back,Foward”功能。
private List tempHistory = new ArrayList();
我正在阅读Java文档,但我不能把解决方案放在一起,除非我错过了很明显没有2D数组像Python一样灵活的ArrayList?
答案 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将包含您要与网址关联的所有字段,例如否。时间页面被访问和所有。