了解下JAVA的JAVA进步教程(12)-熟悉Map之HashMap
在1995年5月23日以“Java”的名称正式发布了。Map内里利用率最多的,应当是HashMap吧,我们先来看看这个
1.packagecollection.lession12;
2.
3.importjava.util.HashMap;
4.importjava.util.Iterator;
5.importjava.util.Map;
6.
7./**
8.*老紫竹JAVA进步教程(12)-熟悉Map之HashMap<br>
9.*基于哈希表的Map接口的完成。<br>
10.*一个映照不克不及包括反复的键;每一个键最多只能映照到一个值。<br>
11.*<br>
12.*相干API请检察api.java2000.net/Map
13.*
14.*@author老紫竹JAVA世纪网(java2000.net)
15.*/
16.publicclassLession12{
17.
18.publicstaticvoidmain(String[]args){
19.//我们用String做一切的测试
20.HashMap<String,String>map=newHashMap<String,String>();
21.
22.//同意null作为Key.
23.//看看源代码完成就晓得了
24.//if(key==null)
25.//returnputForNullKey(value);
26.map.put(null,"测试null的键");
27.showMap(map);//null=>测试null的键;
28.
29.//固然也同意null的Value了
30.map.put("测试null的值",null);
31.showMap(map);//null=>测试null的键;测试null的值=>null;
32.
33.//对应的都是null
34.//注重这个null交换了后面的"NullKey"字符串的value了
35.//也就是前面的不异的key会交换之前的key对应的value
36.//前往值为之前的值
37.System.out.println("之前的值="+map.put(null,null));//之前的值=测试null的键
38.showMap(map);//null=>null;测试null的值=>null;
39.
40.//别的的和Map不异的操纵就不先容了
41.//这里先容一下Hash的特别的中央
42.//人人利用时必定要注重,实在和HashSet有不异的中央
43.//那就是经由过程Key的Hashcode举行查找
44.
45.Map<MyObject,String>map2=newHashMap<MyObject,String>();
46.MyObjectkey1=newMyObject("第一个对象");
47.MyObjectkey2=newMyObject("第二个对象");
48.MyObjectkey3=newMyObject("第三个对象");
49.map2.put(key1,"111111");
50.map2.put(key2,"222222");
51.
52.//我们来测试读取第一个
53.System.out.println(map2.get(key1));//111111
54.
55.//我们实验修正key1的name
56.key1.setName("第一个对象-修正");
57.
58.//我们再次测试读取第一个
59.//没有找到哦!
60.System.out.println(map2.get(key1));//null
61.
62.//总结
63.//HashSet必定要注重hashCode的成绩
64.//关于String等不成修正类无所谓
65.//但关于一般类,必定要注重其hashCode的完成体例
66.//万万不要让一个类的hashCode任意变化
67.//假如非得更新,应当先删除,后修正
68.map2.remove(key2);
69.key2.setName("第二个对象-修正");
70.map2.put(key2,"2222222---");
71.showMap(map2);//第二个对象-修正=>2222222---;第一个对象-修正=>null;
72.
73.//对Value则没有这个限定
74.}
75.
76.publicstaticvoidshowMap(Mapmap){
77.//迭代Key的操纵
78.Iteratorit=map.keySet().iterator();
79.Objectkey;
80.while(it.hasNext()){
81.key=it.next();
82.System.out.print(key+"=>"+map.get(key)+";");
83.}
84.System.out.println();
85.}
86.}
87.
88.classMyObject{
89.
90.privateStringname;
91.
92.publicStringgetName(){
93.returnname;
94.}
95.
96.publicvoidsetName(Stringname){
97.this.name=name;
98.}
99.
100.MyObject(Stringname){
101.this.name=name;
102.}
103.
104.//注重这里利用name的hashCode作为类的hashCode
105.publicinthashCode(){
106.returnname.hashCode();
107.}
108.
109.publicStringtoString(){
110.returnname;
111.}
112.}
运转了局(已包括在源代码里)
null=>测试null的键;
null=>测试null的键;测试null的值=>null;
之前的值=测试null的键
null=>null;测试null的值=>null;
111111
null
第二个对象-修正=>2222222---;第一个对象-修正=>null;
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 是一种使用者不需花费很多时间学习的语言 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
页:
[1]