您的位置:首页 > 职场人生

黑马程序员_JavaAPI补充

2011-09-22 21:23 288 查看
---------------------- android培训、java培训、期待与您交流! -------------------------------------------- android培训、java培训、期待与您交流! ----------------------

1.vector和enumeration(两者都在java.util包中)

vector类是java语言提供的一种高级数据结构,可用于动态保存一系列对象。

对书上的实例结合高新技术中的自动装箱拆箱的技术后改写的程序,输入一串1位数后并相加。

import java.util.*;

class test

{

public static void main(String[] args)

{

Vector v1=new Vector();

while(true)

{

int ch=0;

try

{

ch=System.in.read();

}

catch(Exception e)

{e.printStackTrace();}

if (ch=='\r'|ch=='\n')

break;

else

v1.add(ch-'0');//将输入的字符转成数字并自动装箱成包装类加入向量

}

Enumeration e=v1.elements();

int sum=0;

while(e.hasMoreElements())

{

sum+=(Integer)e.nextElement();//自动拆箱

}

System.out.println(sum);

}

}

2.collection接口和iterator接口

按照java语法,colletion自己不能创建对象,要靠实现了它的arraylist来创建,iterator与enumeration的作用类似

在vector和Enumeration的程序的基础上略加修改后的程序:

import java.util.*;

class test

{

public static void main(String[] args)

{

ArrayList a1=new ArrayList();

while(true)

{

int ch=0;

try

{

ch=System.in.read();

}

catch(Exception e)

{e.printStackTrace();}

if (ch=='\r'|ch=='\n')

break;

else

a1.add(ch-'0');//将输入的字符转成数字并自动装箱成包装类加入向量

}

Iterator e=a1.iterator();

int sum=0;

while(e.hasNext())

{

sum+=(Integer)e.next();//自动拆箱

}

System.out.println(sum);

}

}

【Vector和Arraylist的区别】

Vector类中的所有方法都是线程同步的,两个线程并发访问Vector对象将是安全的,但即使只有一个线程访问,因为源程序仍然调用了同步方法,所以运行效率低些,Arraylist则刚好相反,没有线程同步,效率高些。

3。collection的子接口set和list(前者不能重复,后者有顺序)

查阅chm文档后,发现set和list不是一个一个对应的,比如说有arraylist但是没有arrayset,有enumset,但是没有enumlist。

实验打印效果和sort方法的程序:

import java.util.*;

class test

{

public static void main(String[] args)

{

ArrayList a1=new ArrayList();

while(true)

{

int ch=0;

try

{

ch=System.in.read();

}

catch(Exception e)

{e.printStackTrace();}

if (ch=='\r'|ch=='\n')

break;

else

a1.add(ch-'0');//将输入的字符转成数字并自动装箱成包装类加入向量

}

/*Iterator e=a1.iterator();

int sum=0;

while(e.hasNext())

{

sum+=(Integer)e.next();//自动拆箱

}

System.out.println(sum);*/

Collections.sort(a1);

System.out.println(a1);

}

}

输入:987654321

输出:[1,2,3,4,5,6,7,8,9]

【Hashtable与Properties类】

Hashtable也是一种高级数据结构,用以快速检索数据。它不仅像vector那样动态存储数据,而且还对每一存储的对象安排另一个对象(关键字)与之相关联。hashtable的key和value都不能为空对象null,如果新加的项目的key和以前有一样的,则覆盖原有的值。用作关键字的类必须覆盖object.hashcode和object.equals。

实例:

import java.util.*;

class testHashtable

{

public static void main(String[] args)

{

Hashtable h1=new Hashtable();

MyKey k1=new MyKey("e1",1);

MyKey k2=new MyKey("e2",2);

MyKey k3=new MyKey("e3",3);

h1.put(k1,1000);

h1.put(k2,2000);

h1.put(k3,3000);

Enumeration e=h1.keys();

while(e.hasMoreElements())

{

MyKey temp=(MyKey)e.nextElement();

System.out.println(h1.get(temp)+"yuan");

}

/*System.out.println(h1.get(k1)+"yuan");//如果用被注释的语句,结果是按照原来顺序打印的,而使用枚举的顺序刚好是相反的。

System.out.println(h1.get(k2)+"yuan");

System.out.println(h1.get(k3)+"yuan");*/

}

}

class MyKey//自定义的关键字,覆盖了equals和hashcode方法

{

int hao;

String name;

public MyKey(String name,int hao)

{

this.name=name;

this.hao=hao;

}

public boolean equals(MyKey key)

{

if (name.equals(key.name)&&(hao==key.hao))

return true;

else

return false;

}

public int hashCode()

{

return name.hashCode()+hao;

}

}

自定义的equals和hashcode方法是给hashtable的get方法来调用的

从hashtable中直接抓出来的key是不需要比较的,也就是不用调用上面两个方法,只有新建的对象才需要比较

---------------------- android培训、java培训、期待与您交流! -------------------------------------------- android培训、java培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: