仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 507|回复: 10
打印 上一主题 下一主题

[学习教程] 来看JAVA进步教程(2)-熟悉Set汇合之HashSet

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:12:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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语言的团队,是微软重金挖过去的啊
活着的死人 该用户已被删除
沙发
发表于 2015-1-20 17:05:28 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
海妖 该用户已被删除
板凳
发表于 2015-1-20 21:55:08 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
柔情似水 该用户已被删除
地板
发表于 2015-1-30 05:54:39 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
透明 该用户已被删除
5#
发表于 2015-2-1 18:37:18 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
蒙在股里 该用户已被删除
6#
发表于 2015-2-6 03:05:11 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
7#
发表于 2015-2-9 03:07:43 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
若天明 该用户已被删除
8#
发表于 2015-2-26 19:38:46 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
飘飘悠悠 该用户已被删除
9#
发表于 2015-3-8 17:03:18 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
小魔女 该用户已被删除
10#
发表于 2015-3-16 06:22:52 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
再见西城 该用户已被删除
11#
发表于 2015-3-22 20:35:02 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 22:19

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表