黑马程序员---- Java学习笔记:1.异常 2.集合

来源:互联网 发布:手机望远镜软件 推荐 编辑:程序博客网 时间:2024/05/22 14:34

----------------------http://edu.csdn.net/heima" target="blank">android培训、http://edu.csdn.net/heima" target="blank">java培训、期待与您交流! ----------------------

一、java 集合问题:

1、set(集):

集合中的对象不按特定方式排列,并且没有重复对象。它的有些实现类能对集合中的对象按特定方式排列。

set接口主要有两个实现类:hashset和treeset,

hashset按照哈希算法来存储对象,具有很好的存取和查找性能,当向集合中添加一个对象时,

hashset会调用对象的hashcode()方法来获得哈希码,然后根据这个哈希码进一步计算出对象在集合

中的存放位置。hashset还有一个子类linkedhashset类,它在hashset的基础之上实现了链表数据结

构,链表数据结构可以提高新增和删除元素的性能。

treeset类实现了sortedset接口(继承自set),具有排序功能。有自然排序和客户化排序两种排

序方式:

在jdk类库中,有一部分类实现了comparable接口,该接口有一个compareto(object o)方法,

它返回整数类型。treeset调用对象的compareto()方法比较集合中的对象的大小,然后进行排序,这

种排序方式称为自然排序。

以下是jdk类库中实现了comparable接口的一些类排序方式:

byte double float integer long short--->按数字大小排序;

character ---->按字符的unicode值的数字大小排序;

string---->按字符串中字符的unicode值排序。

使用自然排序时,只能向treeset集合中加入同类型的对象,并且这些对象的类必须实现了

comparable接口。

2、list(列表):

集合中的对象按照索引位置排序,可以有重复对象。允许按照对象在集合中的索引位置检索对象。该集合与数组有些相似。

list接口的主要实现类:

arraylist:代表长度可变的数组。允许对元素的快速的随机访问,但是向arraylist中插入与删除

元素的速度较慢。

linkedlist:在实现中采用链表数据结构。对顺序访问进行优化,向list中插入和删除元素的速度

较快,随机访问速度较慢。随机访问是指检索特定索引位置的元素。linkedlist单独具有addfirst()、

addlast()、getfirst()、getlast()、removefirst()、removelast()方法,这些方法使得linkedlist

可以作为堆栈,队列和双向队列使用。

list只能对集合中的对象按索引位置排列,如果希望对list中的对象按其他特定的方式排序,可以

借助collections类和comparable接口(或comparator接口);collections类是java集合类库中的辅助类,

它提供了操纵集合的各种静态方法,其中sort()方法用于对list中的对象进行排序。

》sort(list list):对象list中的对象进行自然排序。

》sort(list list,comparator comparator):对list中的对象进行客户化排序,comparator参数

指定排序方式。

3、map(映射):

集合中的每一对元素包含一个键对象和值对象,集合中没有重复的键对象,值对象可以重复。它的有

些实现类能对集合中的键对象进行排序。

向map集合中加入元素时,必须提供一对键对象和值对象,从集合中检索元素时,只要给出键对象,就会

返回相应的值对象。

map有两种常用的实现:hashmap和treemap。

hashmap按照哈希算法存储对象,有很好的存取性能;treemap实现了sortedmap接口,能对键对象进行

排序。treemap也支持自然排序和客户化排序。

如果希望treemap对键对象进行客户化排序,可以调用它的另一个构造方法----treemap(comparator comparator),

参数comparator指定具体的排序方式。

以上是我对java中集合的一点小小总结,其中尚有我未知晓的地方,望看到该贴的同学多多指教,谢谢!

4.vector类和enumeration接口

vector类可以用来保存若干对象,由于java没有提供动态数组,当要把若干不确定数目的对象保存在一种数据结构中,可以用vector类

enumeration接口,由于实现此接口的对象会生成一系列元素,一次只能生成一个,可以通过连续调用 nextelement()方法将返回一系列的连

续元素

collection接口与iterator接口

由于collection是一个接口,我们不能使用它直接创立实用对象,必须用实现了collection接口的类来创建实例对象

接口iterator,对集合进行迭代的迭代器

方法:

1 .是否存在下一个元素:hasnext() 如果仍有元素可以迭代,则返回 true。

2.next() 返回迭代的下一个元素。

stack

方法:push()进栈 pop()出栈empty()判断是否为空

------------------------------------------------------------------------------------------

二、java中的异常:

java为异常提供了try-catch-finally语句来支持异常处理。try语句有关键字try和随后用于

封装try块的大括号{}构成。try块包含可能产生异常的语句,并且在try块后必须至少紧跟一条

catch块或一条finally块,每个catch块在圆括号中指定一个异常类参数,用于标识该类catch

块能够处理的异常类型。在最后一个catch块后是一个可选的finally块,无论异常是否发生,都

会执行该块所提供的代码。

try{

可能会出现异常情况的代码

}catch(异常类型一 e1){

处理出现异常一类型的代码

}catch(异常类型二 e2){

处理出现异常二类型的代码

}

try块中包含可能出现异常情况的代码,随后紧跟catch块,并且两个块中不允许出现其他的语句。

异常分类:

嵌套异常、

public void test(string [] arg){

try{

int num = integer.parseint(arg[1]);

try{

int numvalue = integer.parseint(arg[0]);

system.out.println(arg[0]+"的平方是"+numvalue*numvalue);

}catch(numberformatexception ne){

system.out.println("不是一个数字!");

}

}catch(arrayindexoutofboundsexception ae){

system.out.println("请输入数字!");

}

}

多重异常、

class exceptioncode{

protected exceptioncode(){

}

public void calculate(){

try{

int num = 0;

int num1 = 42/num;

}catch(arithmeticexception e){

system.out.println("父类异常catch子句");

}catch(exception e){

system.out.println("这个子类的父类是"+"exception类,且不能到达");

}

}

}

自定义异常、

class factorialcompute

{

protected factorialcompute(){}

public static long factorial(final int x)

{

long fact=1;

if(x5)

{

throw new departmentexception();

}

else

{

system.out.println("雇员编号是:"+empld);

system.out.println("雇员姓名是:"+empname);

system.out.println("部门编号是:"+deptld);

}

}catch(departmentexception de){system.out.println("数据无效");}

catch(numberformatexception ne){system.out.println("数据错误");}

catch(arrayindexoutofboundsexception ae){system.out.println("数据不完整");}

}

----------------------http://edu.csdn.net/heima" target="blank">android培训、http://edu.csdn.net/heima" target="blank">java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima" target="blank">http://edu.csdn.net/heima


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
原创粉丝点击