黑马程序员---- 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^)/
- 黑马程序员---- Java学习笔记:1.异常 2.集合
- 黑马程序员-java集合 学习笔记
- 黑马程序员java学习笔记,集合
- 黑马程序员-java基础-集合学习笔记
- 黑马程序员------java学习笔记之集合
- 黑马程序员---java学习笔记之集合
- 黑马程序员-java学习笔记-集合框架
- 黑马程序员 java学习笔记 Day4:集合
- 黑马程序员-java异常学习笔记
- 黑马程序员--java异常学习笔记
- 黑马程序员--java异常学习笔记
- 黑马程序员-学习笔记java基础-异常
- 黑马程序员 java学习笔记 Day1:异常
- 【黑马程序员】Java学习笔记--异常
- 黑马程序员--学习笔记--Java异常处理
- 黑马程序员-学习笔记-集合
- “黑马程序员”-java集合笔记
- 黑马程序员-Java异常学习
- miaoshuncai
- java 多线程
- javascript 设置cookie
- 你还在用Java么?
- "爱说说"技术原理:前端Javascript优化技巧(四)
- 黑马程序员---- Java学习笔记:1.异常 2.集合
- xinshenghu
- 如何才算掌握Java(J2SE篇) 转载
- JavaScript拖拽,凑个热闹
- [置顶]《与Java相恋》(初级篇)四-Java面向对象编程基础(一)
- 如何迅速成为Java高手
- 向Java、Unix开发人员介绍.NET
- 转载 java修饰符public final static abstract transient
- java中split使用应注意分隔符问题