Java 爪哇-地图及;散列图

Java 爪哇-地图及;散列图,java,map,hashmap,Java,Map,Hashmap,所以这是一个非常基本的问题。我读了一个同事写的课程,我只学了六个月Java,我了解到: private Map<Dimension, Object> data = new HashMap<Dimension, Object>(); private Map data=new HashMap(); 当然,我在网上咨询过,但它并没有给出一个我能很好理解的解释。所以我想知道是否有人能解释一下这段代码在做什么,以及映射通常做什么?什么是映射或HashMap(为什么在声明映射时创

所以这是一个非常基本的问题。我读了一个同事写的课程,我只学了六个月Java,我了解到:

private Map<Dimension, Object> data = new HashMap<Dimension, Object>();
private Map data=new HashMap();

当然,我在网上咨询过,但它并没有给出一个我能很好理解的解释。所以我想知道是否有人能解释一下这段代码在做什么,以及映射通常做什么?什么是映射或HashMap(为什么在声明映射时创建HashMap?)。还有,映射用于什么?是什么使它们比ArrayList更好?

Map
是接口类型。它定义了类的行为方式<代码>HashMap是实现。这是一种实现
映射
行为的方法,但可以通过多种方式实现(哈希表、二叉树等)

记住这一点,阅读这两份文件

ArrayList
是另一种集合(它符合接口
List
)。它只是做不同的事情(存储对象列表而不是映射)。文件很清楚


地图用于存储关系。也就是说,您可以将给定的键(它可以不是数字,而是数组中的键)与值关联,然后高效地检索它

声明中使用的映射是此类集合的接口,它仅定义任何给定映射应导出给其用户的内容,而HashMap是该映射接口的实现,它使用哈希表作为支持数据结构

例如,您可以制作一个ArrayMap,该ArrayMap实现了Map接口,但在其后面使用了一个数组,尽管数据结构(数组)对于Map接口所描述的操作不是非常有效


我建议您阅读和的文档。

与ArrayList的区别在于,Maps存储键->值关联,而ArrayList的存储是可索引的

您的同事可以将HashMap分配给变量类型的映射,因为HashMap实现了映射接口()

他这样做的一个原因可能是暗示他只使用Map中声明的方法,并且不依赖于HashMap只实现的方法,这些方法来自:

映射是将键映射到值的对象。映射不能包含重复的键:每个键最多可以映射到一个值。它对数学函数抽象进行建模

因此,代码中映射的内容可能是:

DimensionX => x-dimension stuff
DimensionY => y-dimension stuff
DimensionZ => z-dimension stuff
至于地图和阵列之间的区别:

映射存储键/值对并提供访问器,例如,到给定键的值

Map<Dimension, Object> myDimensionMap = new HashMap<Dimension, Object>();
Dimension dimensionXKey = new Dimension("X");
Object dimensionXValue = myDimensionMap[dimensionXKey];
Map myDimensionMap=newhashmap();
尺寸X键=新尺寸(“X”);
对象dimensionXValue=myDimensionMap[dimensionXKey];
ArrayList(通常包括列表)提供值的有序存储

List<String> myTokenList = Arrays.asList(new String[]{"first", "second", "third"});
String firstToken = myTokenList.get(0); // "first"
List myTokenList=Arrays.asList(新字符串[]{“第一”、“第二”、“第三”});
String firstToken=myTokenList.get(0);//“第一”
地图非常适合缓存,在缓存中,您需要根据密钥查找某些内容;通常它们不是有序的,而是像列表一样保留插入顺序

代码示例中的映射声明非常常见,它演示了将集合变量声明为接口类型以及将值声明为接口实现的实践。正如其他人所指出的,接口(例如
Map
)定义了用户可用的方法,而实现(例如
HashMap
)实现了支持接口的逻辑


这被认为是很好的实践,因为它允许您更改(在本例中)Map的底层实现,而无需更改使用它的代码。

您找到了用于Map和HashMap的JavaDoc吗?还有Java集合教程?是的,但我还是觉得它(对我来说)没有足够清楚地回答上述问题。你应该说明什么是不清楚的,否则你会再次得到同样的信息。例如,地图和列表是非常不同的,教程对它们进行了不同的解释。这些文档不是适合初学者的教程,是吗?实际上。。。为什么不呢?语言很清楚。他们没有太多的行话。