请问在JAVA中Map和HashMap有什么区别?

来源:互联网 发布:商场数据 编辑:程序博客网 时间:2024/05/22 00:12

请问在JAVA中Map和HashMap有什么区别?第一次问 谢谢 各位 [问题点数:20分]

 收藏
楼主发表于: 2008-07-09 01:55:29
请问在JAVA中Map和HashMap有什么区别?第一次问 谢谢 各位
  • <iframe id="iframeu1636200_0" src="http://pos.baidu.com/qckm?rdid=1636200&amp;dc=2&amp;exps=112101&amp;di=u1636200&amp;dri=0&amp;dis=0&amp;dai=2&amp;ps=589x630&amp;dcb=BAIDU_SSP_define&amp;dtm=BAIDU_DUP_SETJSONADSLOT&amp;dvi=0.0&amp;dci=-1&amp;dpt=none&amp;tsr=0&amp;tpr=1458784819726&amp;ti=%E8%AF%B7%E9%97%AE%E5%9C%A8JAVA%E4%B8%ADMap%E5%92%8CHashMap%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%3F%E7%AC%AC%E4%B8%80%E6%AC%A1%E9%97%AE%20%E8%B0%A2%E8%B0%A2%20%E5%90%84%E4%BD%8D-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80&amp;ari=1&amp;dbv=2&amp;drs=1&amp;pcs=1120x545&amp;pss=1120x720&amp;cfv=0&amp;cpl=4&amp;chi=1&amp;cce=true&amp;cec=UTF-8&amp;tlm=1458784820&amp;ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F240071574&amp;ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DsaZ3EBaYw1Aq1nu0Jz5I0s857Q3zS-U8ttiFb1iLFV6XKfIXmQEYOrXzNoUJIT_D%26wd%3D%26eqid%3Dae7cef990005acbe0000000556f349b4&amp;ecd=1&amp;psr=1366x768&amp;par=1366x728&amp;pis=-1x-1&amp;ccd=24&amp;cja=false&amp;cmi=6&amp;col=zh-CN&amp;cdo=-1&amp;tcn=1458784820&amp;qn=f58a68750aa83604&amp;tt=1458784819699.416.588.589" width="200" height="22" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="box-sizing: content-box; border-width: 0px; border-style: initial; vertical-align: bottom; margin: 0px;"></iframe>
     
  • <iframe id="iframeu1636201_0" src="http://pos.baidu.com/qckm?rdid=1636201&amp;dc=2&amp;exps=112101&amp;di=u1636201&amp;dri=0&amp;dis=0&amp;dai=3&amp;ps=606x652&amp;dcb=BAIDU_SSP_define&amp;dtm=BAIDU_DUP_SETJSONADSLOT&amp;dvi=0.0&amp;dci=-1&amp;dpt=none&amp;tsr=0&amp;tpr=1458784819726&amp;ti=%E8%AF%B7%E9%97%AE%E5%9C%A8JAVA%E4%B8%ADMap%E5%92%8CHashMap%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%3F%E7%AC%AC%E4%B8%80%E6%AC%A1%E9%97%AE%20%E8%B0%A2%E8%B0%A2%20%E5%90%84%E4%BD%8D-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80&amp;ari=1&amp;dbv=2&amp;drs=1&amp;pcs=1120x545&amp;pss=1120x720&amp;cfv=0&amp;cpl=4&amp;chi=1&amp;cce=true&amp;cec=UTF-8&amp;tlm=1458784820&amp;ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F240071574&amp;ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DsaZ3EBaYw1Aq1nu0Jz5I0s857Q3zS-U8ttiFb1iLFV6XKfIXmQEYOrXzNoUJIT_D%26wd%3D%26eqid%3Dae7cef990005acbe0000000556f349b4&amp;ecd=1&amp;psr=1366x768&amp;par=1366x728&amp;pis=-1x-1&amp;ccd=24&amp;cja=false&amp;cmi=6&amp;col=zh-CN&amp;cdo=-1&amp;tcn=1458784820&amp;qn=e074a9cc6d6a925e&amp;tt=1458784819699.581.650.650" width="200" height="22" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="box-sizing: content-box; border-width: 0px; border-style: initial; vertical-align: bottom; margin: 0px;"></iframe>
     
  • <iframe id="iframeu1636204_0" src="http://pos.baidu.com/qckm?rdid=1636204&amp;dc=2&amp;exps=112101&amp;di=u1636204&amp;dri=0&amp;dis=0&amp;dai=4&amp;ps=611x874&amp;dcb=BAIDU_SSP_define&amp;dtm=BAIDU_DUP_SETJSONADSLOT&amp;dvi=0.0&amp;dci=-1&amp;dpt=none&amp;tsr=0&amp;tpr=1458784819726&amp;ti=%E8%AF%B7%E9%97%AE%E5%9C%A8JAVA%E4%B8%ADMap%E5%92%8CHashMap%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%3F%E7%AC%AC%E4%B8%80%E6%AC%A1%E9%97%AE%20%E8%B0%A2%E8%B0%A2%20%E5%90%84%E4%BD%8D-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80&amp;ari=1&amp;dbv=2&amp;drs=1&amp;pcs=1120x545&amp;pss=1120x720&amp;cfv=0&amp;cpl=4&amp;chi=1&amp;cce=true&amp;cec=UTF-8&amp;tlm=1458784820&amp;ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F240071574&amp;ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DsaZ3EBaYw1Aq1nu0Jz5I0s857Q3zS-U8ttiFb1iLFV6XKfIXmQEYOrXzNoUJIT_D%26wd%3D%26eqid%3Dae7cef990005acbe0000000556f349b4&amp;ecd=1&amp;psr=1366x768&amp;par=1366x728&amp;pis=-1x-1&amp;ccd=24&amp;cja=false&amp;cmi=6&amp;col=zh-CN&amp;cdo=-1&amp;tcn=1458784820&amp;qn=dc2e2b240a504557&amp;tt=1458784819699.723.865.865" width="200" height="22" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="box-sizing: content-box; border-width: 0px; border-style: initial; vertical-align: bottom; margin: 0px;"></iframe>
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
回复次数:26
#2 得分:0回复于: 2008-07-09 02:01:25
HashMap implements Map

Map是一个接口,HashMap是Map的实现类之一。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#3 得分:0回复于: 2008-07-09 09:12:42
引用 2 楼 jishu_vip 的回复:
HashMap implements Map 

Map是一个接口,HashMap是Map的实现类之一。

赞同.........
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#4 得分:0回复于: 2008-07-09 09:16:36
引用 2 楼 jishu_vip 的回复:
HashMap implements Map 

Map是一个接口,HashMap是Map的实现类之一。


对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#5 得分:0回复于: 2008-07-09 09:22:51
HashMap是类,Map是接口,HashMap实现了接口Map,就是说HashMap实现了Map所有的方法。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#6 得分:0回复于: 2008-07-09 09:30:56
1.HashMap是类,Map是接口


2.HashMap实现了接口Map,就是说HashMap实现了Map所有的方法。

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#7 得分:0回复于: 2008-07-09 09:36:24
                                       Collection
                                        /       \
                                       /         \
                                      /           \
                                    Set            List(有顺序,可以重复)
                                  /    \                   \
                                /       |                   \
                               /      HashSet                \
                              /   (不重复,没有特定顺序)       / \
                             /                              /   \
                           SortedSet(有顺序)         LinkList ArrayList
                            /
                           /
                        TreeSet(不重复,有顺序,类型一样)       

Map--->HashMap
Map--->TreeMap
Map--->SortedMap
对我有用[8] 丢个板砖[0] 引用 | 举报 | 管理
#8 得分:0回复于: 2008-07-09 09:38:07
同意以上观点。。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#9 得分:0回复于: 2008-07-09 09:58:26
顶,具体可以看JDK帮助文档
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#10 得分:0回复于: 2008-07-09 10:07:59
Map是接口
HashMap是Map实现类
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#11 得分:0回复于: 2008-07-09 10:22:15
引用 10 楼 wxinb 的回复:
Map是接口 
HashMap是Map实现类
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#12 得分:0回复于: 2008-07-09 10:29:47
引用 3 楼 duzhonghua 的回复:
引用 2 楼 jishu_vip 的回复:
HashMap implements Map 

Map是一个接口,HashMap是Map的实现类之一。 
 
赞同.........
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#13 得分:0回复于: 2008-07-09 10:31:28
HashMap implements Map 

Map是一个接口,HashMap是Map的实现类之一。

你要定义一个map的时候应该这样定义
Map map=new  HashMap();

这样是不对的 Map map =new Map(); Map是个接口不能实例化
对我有用[2] 丢个板砖[0] 引用 | 举报 | 管理
#14 得分:0回复于: 2008-07-09 13:26:51
-------------------------------------------------------------
            Quietly through  .....
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#15 得分:0回复于: 2008-07-09 13:37:44
引用 13 楼 sun_cat 的回复:
HashMap implements Map 

Map是一个接口,HashMap是Map的实现类之一。 

你要定义一个map的时候应该这样定义 
Map map=new  HashMap(); 

这样是不对的 Map map =new Map(); Map是个接口不能实例化


Map map=new  HashMap();
这样的定义可以啊。见下面的程序,可以运行的。
Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.util.*;
public class TestMap {
    public static void main(String[] args) {
        Map<String, Integer> m = new HashMap<String, Integer>();
        Map<String, Integer> m2 = new HashMap<String, Integer>();
         
        m.put("one"1);
        m.put("two"2);
        m.put("three"3);
        System.out.println( m2.isEmpty()); //true
        m2.putAll( m );
        System.out.println( m2.isEmpty()); //false
         
        System.out.println( m.put("four"4));
        System.out.println( m.get("one"));    //1
        m.remove("one");
        System.out.println( m.put("two"20)  );
        System.out.println( m.containsKey("four")); //true
        System.out.println(m.containsValue(2) );
        System.out.println( m.size() );   //3
        System.out.println( "m2: " + m2 );   
         
        if( m.containsKey("two")) {
                int i = m.get("two");
            System.out.println(i);        
        }
         
     
    }
}
对我有用[2] 丢个板砖[1] 引用 | 举报 | 管理
#16 得分:0回复于: 2008-07-09 14:02:20
..studing ...
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#17 得分:0回复于: 2008-07-09 14:07:02
            map(映像)接口
            /       \
           /          \
     HashMap实现类      HashTable实现类
HashMap,HashTable都是map的实现类。都是以键值对的形式存储数据。HashiMap没有实现线程安全允许null的键值
Map ma=new HashMap();
ma.pub(key,value);
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#18 得分:0回复于: 2008-07-09 17:18:56
                    Collection 
                                        /      \ 
                                      /        \ 
                                      /          \ 
                                    Set            List(有顺序,可以重复) 
                                  /    \                  \ 
                                /      ¦                  \ 
                              /      HashSet                \ 
                              /  (不重复,没有特定顺序)      / \ 
                            /                              /  \ 
                          SortedSet(有顺序)        LinkList ArrayList 
                            / 
                          / 
                        TreeSet(不重复,有顺序,类型一样)      

Map--->HashMap 
Map--->TreeMap 
Map--->SortedMap
对我有用[0] 丢个板砖[1] 引用 | 举报 | 管理
#19 得分:0回复于: 2008-07-19 18:42:56
谢谢各位
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#20 得分:0回复于: 2008-07-19 18:45:00
引用 7 楼 chengyu2099 的回复:
Collection
/       \
/         \
/           \
Set            List(有顺序,可以重复)
/    \                   \
/        ¦                   \
/      HashSet                \
/   (不重复,没有特定顺序)       / \
/                              /   \
SortedSet(有顺序)         LinkList ArrayList
/
/
TreeSet(不重复,有顺序,类型一样)

Map--->HashMap
Map--->TreeMap
Map--->SortedMap


不错
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#21 得分:0回复于: 2008-07-19 18:47:48
       Collection 
                                        /      \ 
                                      /        \ 
                                      /          \ 
                                    Set            List(有顺序,可以重复) 
                                  /    \                  \ 
                                /      ¦                  \ 
                              /      HashSet                \ 
                              /  (不重复,没有特定顺序)      / \ 
                            /                              /  \ 
                          SortedSet(有顺序)        LinkList ArrayList 
                            / 
                          / 
                        TreeSet(不重复,有顺序,类型一样)      

Map--->HashMap 无序
Map--->TreeMap 有序
Map--->SortedMap
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#22 得分:0回复于: 2008-07-19 19:53:15
引用 21 楼 ilysony 的回复:
      Collection 
                                        /      \ 
                                      /        \ 
                                      /          \ 
                                    Set            List(有顺序,可以重复) 
                                  /    \                  \ 
                                /      ¦                  \ 
                        …


就是这个东东
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#23 得分:0回复于: 2008-07-20 18:38:43




和上面的各位大侠说的挺对的呀   map是个接口  hashmap是个继承map的一个类  可以看看api文档呀
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#24 得分:0回复于: 2008-07-21 22:28:26
自己去看下底层代码 马上就明白了
对我有用[0] 丢个板砖[2] 引用 | 举报 | 管理
#25 得分:0回复于: 2011-07-29 11:14:24
引用 15 楼 fengyuleidian3 的回复:
引用 13 楼 sun_cat 的回复:
HashMap implements Map

Map是一个接口,HashMap是Map的实现类之一。

你要定义一个map的时候应该这样定义
Map map=new HashMap();

这样是不对的 Map map =new Map(); Map是个接口不能实例化


Map map=new HashMap();
这样的定义可……
他说的是Map map =new Map();而你的是Map map =new HashMap();
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#26 得分:0回复于: 2011-07-29 11:27:23
应该去查一查有哪些类实现map.以及HashMap和HashTable的区别。。。
0 0
原创粉丝点击