了解下JAVA的利用Maps
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。Map(接口)保持“键-值”对应干系(对),以便经由过程一个键查找响应的值
HashMap*基于一个散列表完成(用它取代Hashtable)。针对“键-值”对的拔出和检索,这类情势具有最不乱的功能。可经由过程构建器对这一功能举行调剂,以便设置散列表的“才能”和“装载因子”
ArrayMap由一个ArrayList后推失掉的Map。对重复的按次供应了准确的把持。面向十分小的Map计划,出格是那些必要常常创立和删除的。关于十分小的Map,创立和重复所支付的价值要比HashMap低很多。但在Map变年夜今后,功能也会响应地年夜幅度下降
TreeMap在一个“红-黑”树的基本上完成。检察键大概“键-值”对时,它们会按流动的按次分列(取决于Comparable或Comparator,稍后即会讲到)。TreeMap最年夜的优点就是我们失掉的是已排好序的了局。TreeMap是含有subMap()办法的独一一种Map,使用它能够前往树的一部分。
Map(interface)
Maintainskey-valueassociations(pairs),soyoucanlookupavalueusingakey.
HashMap*
Implementationbasedonahashtable.(UsethisinsteadofHashtable.)Providesconstant-timeperformanceforinsertingandlocatingpairs.Performancecanbeadjustedviaconstructorsthatallowyoutosetthecapacityandloadfactorofthehashtable.
TreeMap
Implementationbasedonared-blacktree.Whenyouviewthekeysorthepairs,theywillbeinsortedorder(determinedbyComparableorComparator,discussedlater).ThepointofaTreeMapisthatyougettheresultsinsortedorder.TreeMapistheonlyMapwiththesubMap()method,whichallowsyoutoreturnaportionofthetree.
下例包括了两套测试数据和一个fill()办法,使用该办法能够用任何两维数组(由Object组成)添补任何Map。这些工具也会在其他Map例子顶用到。
//:Map1.java
//ThingsyoucandowithMaps
packagec08.newcollections;
importjava.util.*;
publicclassMap1{
publicfinalstaticString[][]testData1={
{"Happy","Cheerfuldisposition"},
{"Sleepy","Prefersdark,quietplaces"},
{"Grumpy","Needstoworkonattitude"},
{"Doc","Fantasizesaboutadvanceddegree"},
{"Dopey","Aforeffort"},
{"Sneezy","Struggleswithallergies"},
{"Bashful","Needsself-esteemworkshop"},
};
publicfinalstaticString[][]testData2={
{"Belligerent","Disruptiveinfluence"},
{"Lazy","Motivationalproblems"},
{"Comatose","Excellentbehavior"}
};
publicstaticMapfill(Mapm,Object[][]o){
for(inti=0;i<o.length;i++)
m.put(o,o);
returnm;
}
//ProducingaSetofthekeys:
publicstaticvoidprintKeys(Mapm){
System.out.print("Size="+m.size()+",");
System.out.print("Keys:");
Collection1.print(m.keySet());
}
//ProducingaCollectionofthevalues:
publicstaticvoidprintValues(Mapm){
System.out.print("Values:");
Collection1.print(m.values());
}
//IteratingthroughMap.Entryobjects(pairs):
publicstaticvoidprint(Mapm){
Collectionentries=m.entries();
Iteratorit=entries.iterator();
while(it.hasNext()){
Map.Entrye=(Map.Entry)it.next();
System.out.println("Key="+e.getKey()+
",Value="+e.getValue());
}
}
publicstaticvoidtest(Mapm){
fill(m,testData1);
//MaphasSetbehaviorforkeys:
fill(m,testData1);
printKeys(m);
printValues(m);
print(m);
Stringkey=testData1;
Stringvalue=testData1;
System.out.println("m.containsKey(""+key+
""):"+m.containsKey(key));
System.out.println("m.get(""+key+""):"
+m.get(key));
System.out.println("m.containsValue(""
+value+""):"+
m.containsValue(value));
Mapm2=fill(newTreeMap(),testData2);
m.putAll(m2);
printKeys(m);
m.remove(testData2);
printKeys(m);
m.clear();
System.out.println("m.isEmpty():"
+m.isEmpty());
fill(m,testData1);
//OperationsontheSetchangetheMap:
m.keySet().removeAll(m.keySet());
System.out.println("m.isEmpty():"
+m.isEmpty());
}
publicstaticvoidmain(Stringargs[]){
System.out.println("TestingHashMap");
test(newHashMap());
System.out.println("TestingTreeMap");
test(newTreeMap());
}
}///:~printKeys(),printValues()和print()办法其实不只是有效的工具,它们也分明地展现了一个Map的Collection“情形”的发生历程。keySet()办法会发生一个Set,它由Map中的键后推得来。在这儿,它只被看成一个Collection看待。values()也失掉了相似的看待,它的感化是发生一个List,个中包括了Map中的一切值(注重键必需是举世无双的,而值能够有反复)。因为这些Collection是由Map后推失掉的,以是一个Collection中的任何改动城市在响应的Map中反应出来。
print()办法的感化是搜集由entries发生的Iterator(重复器),并用它同时打印出每一个“键-值”对的键和值。程序残剩的部分供应了每种Map操纵的复杂示例,并对每品种型的Map举行了测试。
当创立本人的类,将其作为Map中的一个键利用时,必需注重到和之前的Set不异的成绩。
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 是一种使用者不需花费很多时间学习的语言 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 Java是一种计算机编程语言,拥有跨平台、面向对java 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 是一种使用者不需花费很多时间学习的语言 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java是一种计算机编程语言,拥有跨平台、面向对java 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
页:
[1]