Java 可容纳多个无限制值的二维数组
我对java非常陌生,目前正在开发一个不那么简单的web浏览器应用程序,在这个应用程序中,我想用2D数组设置记录一个永久历史文件,其中有3列包含“查看日期”、“URL”、“此URL以前被查看过多少次” 目前,我有一个临时解决方案,只保存“URL”,它也用于使用ArrayList的“后退,前进”功能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
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
。如果希望它们是可排序的,请考虑实现可比较的
,或者制作一个比较器
。