ArrayList与HashMap的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArrayList与HashMap的用法相关的知识,希望对你有一定的参考价值。

当我把String[]中的信息放进ArrayList后,如何再把ArrayList塞进HashMap中??我试这看API手册,但还是不清楚。

还有,HashMap中的put与putAll两个方法,如何使用,才更好的体现它?
望哪位帮我看一下。
谢谢!

ArrayList跟HashMap是不同的集合
ArrayList是列表,集合中的对象是有序的.
HashMap是个映射表,集合中的对象由键值跟存放的对象组成.
HashMap的put是向映射表中添加数据,putAll是将一个映射表全部添加到当前映射表.
比如一个队伍你可用ArrayList,其中存放每个人,你可以通过排的位置找人,踢人.
一个价表你就需要用HashMap,键值是物器名,值是物器价格.
下面是个简单的例子:
HashMap jiageBiao = new HashMap();
jiageBiao.put("鞋子", new Integer(20));
jiageBiao.put("衣服", new Integer(120));
HashMap jiageBiao2 = new HashMap();
jiageBiao2.put("裤子", new Integer(130));
jiageBiao2.putAll(jiageBiao);//把jiageBiao中的数据都添加到JiageBiao2上
Integer xieziJiage = (Integer)jiageBiao.get("鞋子");
参考技术A 我想你说的HASHMAP应该是Java里的吧,你可以参考Java的帮助文档来写代码。我给你写几个例子吧:

Data data1 = new Data(); //假设Data是我们自己定义的类
Data data2 = new Data();
HashMap hm = new HashMap();
hm.put(new Integer(1),data1);
hm.put(new Integer(2),data2);

这样你就可以把data1,data2存进HashMap了。
HashMap和ArrayList的区别是: HashMap 是以键-值的形式存储数据的(就像我例子中的,‘1’就是键,data1就是值);而ArrayList则是用数组的方式存数据的。
参考技术B 没试过不知道

hashMap与 hashTable , ArrayList与linkedList 的区别(详细)

ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦
LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始

Hashtable和HashMap类有三个重要的不同之处。第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。

也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味着,虽然你可以不用采取任何特殊的行为就可以在一个多线程的应用程序中用一个Hashtable,但你必须同样地为一个HashMap提供外同步。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap。这么做的结果就是当你不需要同步时,你不能切断Hashtable中的同步(比如在一个单线程的应用程序中),而且同步增加了很多处理费用。

第三点不同是,只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两种情况。

一些资料建议,当需要同步时,用Hashtable,反之用HashMap。但是,因为在需要时,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一个陈旧的类的,所以有人认为,在各种情况下,HashMap都优先于Hashtable。

关于Properties
有时侯,你可能想用一个hashtable来映射key的字符串到value的字符串。DOS、Windows和Unix中的环境字符串就有一些例子,如key的字符串PATH被映射到value的字符串C:\WINDOWS;C:\WINDOWS\SYSTEM。Hashtables是表示这些的一个简单的方法,但Java提供了另外一种方法。

Java.util.Properties类是Hashtable的一个子类,设计用于String keys和values。Properties对象的用法同Hashtable的用法相象,但是类增加了两个节省时间的方法,你应该知道。

Store()方法把一个Properties对象的内容以一种可读的形式保存到一个文件中。Load()方法正好相反,用来读取文件,并设定Properties对象来包含keys和values。

注意,因为Properties扩展了Hashtable,你可以用超类的put()方法来添加不是String对象的keys和values。这是不可取的。另外,如果你将store()用于一个不包含String对象的Properties对象,store()将失败。作为put()和get()的替代,你应该用setProperty()和getProperty(),它们用String参数。

以上是关于ArrayList与HashMap的用法的主要内容,如果未能解决你的问题,请参考以下文章

集合-ArrayList与HashMap的区别

ArrayList、LinkedList、HashMap 这三个分别的用法?比如实现网站上的哪些功能的时候该选用哪一个?

当Arraylist增长时,带有ArrayList键的HashMap无法找到它

java编程hashmap,arraylist

ArrayList与HashMap踩的坑

在java里怎么把hashmap转换成arraylist和iterator