用Java存储某些数据的最佳方式是什么?(数组与ArrayList)
因此,目前,我正在用java从一个XML文件中提取两个不同的属性(对于我的项目而言),它们彼此相关,并将它们打印到控制台。但是,我希望能够以引用一个值将检索其对应值的方式存储这些值。例如:
Id: rId11 & Target: image3
Id: rId10 & Target: image2
Id: rId9 & Target: image1
有了这3个值,我想要一种存储每一行的方法,但是当我引用“rId”时,我可以得到它对应的“Target”值。我曾考虑使用数组或arrayList,但我不确定哪一个更适合我的目的,也不确定我将如何准确地只引用一个值并获取另一个值。谁能给我一些建议吗?先谢谢你
# 1 楼答案
我想是java。util。HashMap更适合这个要求,尤其是在不需要排序的情况下
# 2 楼答案
使用一个Map,Id作为键,Target作为值。注意,Map是一个接口,因此只定义行为。您需要选择一个特定的实现,比如HashMap
# 3 楼答案
如果我理解正确,您希望能够查找类似“rId10”的内容,并获得值“image2”(仅此而已)
如果是这样的话,我认为最好(就速度而言)和最简单的解决方案是哈希表(java.util.Hashtable)——也要小心使用java泛型(在Java1.5之后)。也请查看http://en.wikipedia.org/wiki/Hash_table
# 4 楼答案
如果目标值的“键”是唯一的,并且只有一个目标映射到它们,那么我建议使用java。util。而不是HashMap。您可以通过传入键来检索任何目标值。另外,你可以像遍历ArrayList一样遍历HashMap
# 5 楼答案
你对自己想要什么有点模棱两可。如果希望基于给定的键查找值,则将对存储在HashMap(更快)或Hashtable(较慢但线程安全)中
基本数组(以及更高级的基于List的集合,如和ArrayList或Vector)不能使用现成的名称-值对。他们只是,嗯。。。名单。原语数组可以提供更高的性能,因为您可以避免创建对象,但更高级的列表类型集合可以更安全、更灵活
尽管如此,这听起来(?)就像您想要的是Map类型的集合,而不是List类型的集合
更新:顺便说一句,如果您使用地图,那么您仍然可以使用所有“rId”值的列表。实际上,它将是一个Set数据类型,但这只是列表的一个特殊表亲,不允许重复:
# 6 楼答案
如果密钥是唯一的,请使用^{}
参考资料:
否则,创建一个保存键和值的自定义对象,并创建一个^{} (或^{} ???)其中之一
参考资料: