|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。
汇合在Java内里的感化不凡,我们经常使用的有Set,List和Map三种,我们先熟习一下Set,出格是HashSet的利用
packagecollection.lession2;
importjava.util.HashSet;
importjava.util.Set;
/**
*老紫竹JAVA进步教程(2)-熟悉Set汇合之HashSet。<br>
*Set用来保留不同意反复的数据。能够是任何对象范例。<br>
*JDK5今后,主范例能够经由过程autobox放进Set内里。
*
*@author老紫竹JAVA世纪网(java2000.net)
*
*/
publicclassLession2{
publicstaticvoidmain(String[]args){
//一般测试
testNormal();
//测试HashSet的特别性
testForHashSet();
testForHashSet2();
}
/**
*测试保留夹杂范例的数据.
*/
publicstaticvoidtestNormal(){
System.out.println("-----testNormal-----------");
//Set有多个完成,我们先看看最经常使用的HashSet
Setset=newHashSet();
//增加一个字符串
set.add("字符串");
//增加一个整数对象
set.add(newInteger(1));
//使用JDK5的特征,增添一个浮点数
set.add(123.45);
//我们看看汇合里对象的数目
System.out.println(set.size());
//我们实验增添一个反复的字符串
set.add("字符串");
//我们再次看看汇合里对象的数目
System.out.println(set.size());
//我们来测试看看是不是汇合里包括了某个数据
System.out.println(set.contains(123.45));
//我们从内里把这个浮点数删除
set.remove(123.45);
//我们再次看看汇合里对象的数目
System.out.println(set.size());
}
/**
*专门针对HashSet的测试。
*/
publicstaticvoidtestForHashSet(){
System.out.println("-----testForHashSet-----------");
HashSet<MyObject>set=newHashSet<MyObject>();
//增添一个null对象
set.add(null);
//我们再次看看汇合里对象的数目
System.out.println(set.size());
//再次增添一个null看看
set.add(null);
//我们再次看看汇合里对象的数目
System.out.println(set.size());
MyObjectobj=newMyObject("java2000",2);
set.add(obj);
obj=newMyObject("csdn",10);
set.add(obj);
//我们再次看看汇合里对象的数目
System.out.println(set.size());
//判别是不是包括某个对象
System.out.println(set.contains(obj));
obj=newMyObject("java2000_net",2);
set.add(obj);
//我们再次看看汇合里对象的数目
System.out.println(set.size());
//我们实验把obj再次放进set看看
//并没有增添,由于是反复的
set.add(obj);
System.out.println(set.size());
//我们机关一个新的对象,内容和后面的不异
obj=newMyObject("java2000_net",2);
set.add(obj);
System.out.println(set.size());
//我们修正一下obj内里的岁数,再看看
obj.setAge(3);
//我们再测试看看是不是包括此对象。
//请注重,我们这个obj和后面的obj是统一个对象
//我们仅仅修正了一下我们的岁数
System.out.println(set.contains(obj));
//我们实验把obj再次放进set看看
//我们又增添了长度
set.add(obj);
System.out.println(set.size());
}
/**
*专门针对HashSet的测试2。
*/
publicstaticvoidtestForHashSet2(){
System.out.println("-----testForHashSet2-----------");
HashSet<MyObject2>set=newHashSet<MyObject2>();
MyObject2obj=null;
for(inti=0;i<3;i++){
obj=newMyObject2("java2000"+i,i);
set.add(obj);
System.out.println(set.size());
}
}
}
classMyObject{
privateintage;
privateStringname;
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
MyObject(Stringname,intage){
this.name=name;
this.age=age;
}
publicbooleanequals(Objectobj){
System.out.println("equals");
if(obj==null||!(objinstanceofMyObject)){
returnfalse;
}
MyObjecto=(MyObject)obj;
returnthis.age==o.age&&this.name.equals(o.name);
}
publicinthashCode(){
inthashCode=name.hashCode()+String.valueOf(age).hashCode();
returnhashCode;
}
}
classMyObject2{
privateintage;
privateStringname;
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
MyObject2(Stringname,intage){
this.name=name;
this.age=age;
}
publicbooleanequals(Objectobj){
System.out.println("equals");
if(obj==null||!(objinstanceofMyObject2)){
returnfalse;
}
MyObject2o=(MyObject2)obj;
returnthis.age==o.age&&this.name.equals(o.name);
}
publicinthashCode(){
return1;
}
}
classMyObject3{
privateintage;
privateStringname;
//接纳一个变量举行把持
//一旦天生了hashCode,则不再变化
privateintHASHCODE=Integer.MIN_VALUE;
publicinthashCode(){
if(HASHCODE==Integer.MIN_VALUE){
//从头天生本类的hashCode
HASHCODE=name.hashCode()+String.valueOf(age).hashCode();
}
returnHASHCODE;
}
}
<p>
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊 |
|