黑马程序员——集合取方法和异常的继承体系

来源:互联网 发布:部落冲突放空火箭数据 编辑:程序博客网 时间:2024/06/07 01:50

           -----android培训、java培训、期待与您交流------

内部接口

  接口中,定义另一个接口。内部接口是外部接口的一个成员。

  一个实现类,实现外部接口,有没有必要实现内部接口

  实现了内部接口,能直接实现吗

  实现类可以直接实现外部接口,不需要单独实现内部接口

  实现类想实现内部接口,则需要使用外部接口调用内部接口

 

Map集合的第二种取出方法entrySet方式

  利用的就是键值对的映射关系(夫妻关系结婚证)

  Map接口中,有一个内部接口Entry,描述键值对关系的对象

  每一个集合子类都用一个方法 entrySet获取到键值对关系对象Entry的实现类的对象。

 将这个Entry接口实现类对象,存储到了Set集合

   Entry接口方法: getKey  getValues

 

HashMap

  底层数据结构,基于哈希表的映射键值对,线程不安全,运行速度快

  这个集合允许使用null值,null

  用作键的对象,必须实现hashCode equals方法,保证唯一性

 

 

Hashtable

  线程安全集合,运行速度慢,不允许null值,null

  出现在JDK1.0版本

 

Properties

   Hashtable的子类Properties,自己的特性是:集合可以和IO结合使用,实现数据的永久性存储

   线程安全的集合,底层结构也是哈希表,泛型已经固定为String类型

 

   特有方法

      setProperty(String key,String value)将键值对存储到集合等同于put

      String getProperty(String key)根据键获取值,等同于get

 

LinkedHashMap集合

 底层结构是哈希表的链表实现,保证了迭代顺序

 线程不安全集合,运行速度快,开始版本JDK1.4

 

TreeMap集合

  TreeMap可以对存储的键进行排序,依靠对象自己的自然顺序,可以提供比较器

  线程不安全集合,运行速度快

  底层结构红黑树(Red-Black Tree)自然平衡算法二叉树

  如果使用比较器,将比较器对象传递到TreeMap构造方法

 

在一个字符串中,统计每个字符出现次数

  提供一个字符串 nextLine()

  myjava

  结果  e出现1  f出现1  g出现3

  TreeMap可以实现字典顺序效果,Map集合存储的是键值对,输出结果就是一组键值对  e=1  f=1  g=3

  单个字符,看成集合中的键,出现次数就是值

  实现思想:

     字符串中的单个字符操作,必须转成char数组  toCharArray()

     有一个集合TreeMap集合<Character,Integer>

     遍历数组

     遍历的过程中,取出数组中的一个字符,字符当作键,到集合中获取值

     集合方法get(字符),集合中没有这个键,get返回null,这个字符在集合中没有,将字符和1存储到集合中

     get(字符),返回值不是null,字符在集合中存在,将值++后,存储回集合

 

Collections集合工具类

  CollectionCollections的区别

  工具类的方法(全静态)

sort(List list)List集合进行升序排列

sort(List list,Comparator c)List集合排序,依照传递的比较器

Comparator reverseOrder()返回一个比较器,作用逆转对象的自然顺序(Comparable),需要和sort一起使用

Comparator reverseOrder(Comparator c)传递比较器,返回一个新的比较器,逆转了传递的比较器的顺序,需要和sort一起使用

int binarySearch(List list, Object key)集合的折半查找

swap(List list,int i,int j)List集合,指定的下标交换位置

reverse(List list)List集合进行反转

shuffle(List list)List集合进行随机排列

fill(List list,Object obj)List集合进行填充

工具类中有一组方法,全部采用synchronized开头,将线程不安全的集合,变成线程安全的集合。

 

数组集合的互转

  数组转成集合,Arrays工具类的方法 asList(数组)返回List集合,不能修改集合长度

  集合转成数组,Collection接口中,方法 toArray()

 

JDK1.5新特性

  静态导入,简化形式,import导入到类的静态成员

 

  可变参数:方法参数的个数是可变的,保证类型不能变

  修饰符返回值类型方法名(数据类型...变量名){

 

  }

可变参数,可传,可不传,如果不传,数组的长度=0

可变参数定义上的注意事项

   一个方法的参数中,只能写一个可变参数,不能写多个

   如果方法定义可变参数,必须写在参数列表的最后

 

异常概述

  什么是异常:就是程序运行中,出现的不正常现象,称为异常

  当一个方法在运行中,出现了异常,进行抛给调用者,如果一直没有异常的处理代码,最终导致程序停下

 

异常的继承体系

  Throwable

    Error

    Exception

Error : 错误,程序出现了严重问题,不修改代码,不能运行,非典,艾滋,埃博拉

Exception:异常,程序中出现了比较轻的问题,处理后继续运行,阑尾炎,感冒

  Throwable类的方法

     构造方法,带有String类型的参数,接收异常信息  by zero

     String toString() 返回带有异常信息的简短描述?

     String getMessage()返回带有异常信息的详细描述?

     void printStackTrace()将异常信息输出到标准输出流(输出到控制台)

异常类:Exception自己,所有子类,Java中任何事物都是对象,将异常这个事物也进行了对象的封装,提供大量的异常类

 

异常的第一种处理方法

  try catch处理

  标准格式

     try{

        被检查的代码

        有可能出现异常的代码

     }catch(异常类变量){

          异常的处理方式

     }

 处理方式很多种,调用方法,写循环,判断,只要有catch就可以称为异常被处理了

 

throwthrows

  throw 用于在方法的内部,手动抛出异常

  throws 用于在方法上暴露异常,我这个方法有异常,请你调用者处理  ExceptionDemo2.java:18:错误: 未报告的异常错误Exception;必须对其进行捕获或声明

以便抛出

 方法中有异常抛出,请你处理,如果不处理,编译失败

 编译的过程中,异常是最后报告的

 可以采用try catch处理后,编译成功

 我想将异常对外暴露出去,谁调用我,谁处理异常

 

 throw 关键字,写在方法中,后面写的是异常对象  new

 throws 关键字,写在方法的声明上,后面写的是异常类

 

try catch finally代码块

  try 检查代码

  catch 处理异常

  finally 一定要指定的代码,无论有没有异常方法,finally中的代码,必须要执行,作用一般用于关闭资源使用。

 

 

0 0