黑马程序员---Map集合取出两种方式,HashMap,TreeMap,Collections工具类,数组和集合的互转,


1.      第十八天回顾

 Set特性,无序,不重复,无下标

 HashSet 保证唯一性,存储对象自己的hashCodeequals方法,底层哈希表,线程不安全,查询速度快

 hashCode equals方法面试题,hashCode协定

 TreeSet 会排序,依据是存储对象的自然顺序或者集合自己依靠比较器来排序

 自然顺序,类实现Comparable,重写compareTo方法

 实现类,实现Comparator,重写compare方法,TreeSet构造方法中,传递比较器对象

 底层是二叉树,线程不安全集合

 Map集合,存储两个对象的键值对,键唯一的,只能映射一个值

 Map接口方法 put  get containsKey containsValue  keySet  entrySet

 

2.      第十九天学习内容:Map集合取出两种方式,HashMap,TreeMap,LinkedHashMap,Hashtable, Properties。Collections工具类,数组和集合的互转,静态导入,可变参数。异常

 

3.      Map集合第一种取出方法ketSet方法

  代码少,简单易懂

  Set<Key>  keySet() 将Map集合中所有的键,存储到Set集合

  迭代Set集合,获取到Map中所有的键

  使用Map中的方法get()获取集合中的值

 

4.      内部接口

  接口中,还有接口

  interface XX{

    interface YY{}

  }

 内部接口都是静态修饰,直接写外部接口名.内部接口

 实现类,可以实现任意接口,实现哪个接口,重写哪个接口方法,没有必要实现外部,重写内部

 Map集合第二种取出方法,内部接口原理

 

5.      Map集合第二种取出方法entrySet方法实现

  代码多,不好理解,开发不常用,面试常用

  利用集合的键值对关系对象,获取,拥有结婚证,找结婚证上的两个人

  键值对关系被Java进行了对象的封装,描述类,是个接口,是一个内部接口Entry,他是Map接口中的一个内部接口 Map.Entry.此接口的实现类对象,就是这个键值对关系对象。

  entrySet()返回值是一个Set集合,这个Set集合,存储的是键值对的关系对象Map.Entry,

  Map.Entry写泛型,集合中的键值对

  Map.Entry接口中的方法:getKey()获取键  getValue()获取值

 

6.      增强for能不能遍历Map集合

  for循环不能直接遍历Map集合,但是可以间接遍历

  Map集合取出就是在Set帮助,for可以遍历Set集合的

 

7.      HashMap类

  基于哈希表的映射键值对,线程不安全,可以存储null值,null键,无序集合

  要求最为键的对象,必须保证唯一性,对象重写hashCode和equals方法

 

8.      LinkedHashMap

  是HashMap的子类,基于链表的哈希表实现,有序的Map集合,线程不安全的,开始版本JDK1.4

 

9.      Hashtable

  底层数据结构也是哈希表,但是不允许存储null,线程安全,运行速度慢。开始版本JDK1.0、

  但是没有集合框架以前,存储键值对,只能依靠Hashtable,被HashMap取代,郁郁而终了。

  但是他有一个子类Properties,依然活跃在开发舞台,这个集合可以和IO流配合使用

 

10.  TreeMap集合

  对存储的键进行排序,需要对象的自然顺序,或者比较器,用法和实现代码,直接参考HashSet集合

  线程不安全集合,运行速度快,底层实现红黑树,自然平衡算法二叉树

 

11.  集合的嵌套演示

  数据的结构,数据存储到集合,并遍历,2中方式

  传智播客:基础班,就业班

  基础班有学生 : 001  张三  002 李四

  就业班有学生 : 001  王武  002 赵柳

  设计,一个集合传智播客,包含两个小集合,分别是基础班和就业班。

  基础班和就业班的集合中,包括每个同学

  一个Map中,存储2个小Map,2个小Map中,存储的是学生学号和姓名

  Map<String,Map<String,Strng>>czbk 实现遍历,需要嵌套循环

 

12.  Map集合的练习

  计算一个字符串中,每个字符出现多少次

  abcdabegef : 结果 字符a出现1次,字符b出现2次,字符c出现1次

  a=1  b=2

  eclipse程序调试功能 debug 断点调试

  F6 一步向下  F5 进入方法体

 

13.  Properties类

  Hashtable的子类,也是一个线程安全的键值对的集合

 这个类不同于其他集合,可以和IO流结合使用,实现数据的永久性存储

 查看API发现这个集合没定义泛型,泛型已经被设定好了,键值对的数据类型都是字符串。完全适用于Map中的一切操作

  特有方法setProperty(String key,String value)等同于就是Map中的put

          getProperty(String value)传递键,返回对应的值,等同于Map中的get方法

 

以后可以用于配置文件。eclipse在workspace文件夹下,存储了文件,文件就是他的配置文件,窗口,字体,等等信息,写在配置文件中,都是键值对,重启eclipse的时候,读取配置文件中的信息

 

14.  集合工具类Collections

  专门操作集合的工具类,方法全部静态

  Collections类中的方法

l  static void sort(List list)根据存储在集合的对象的自然顺序,对List集合排序

l  static void sort(List list,Comparator com)根据比较器对List集合排序

l  static Comparator reverseOrder()返回比较器,逆转对象的自然顺序

l  static Comparator reverseOrder(Comparator c)传递比较器,返回比较器,返回的比较器逆转了传递的比较器

l  static int binarySearch(List list, Object key)集合的折半查找,传递List集合必须有序,找到返回下标,找不到返回-插入点-1

l  static void fill(List list,Object obj)填充集合

l  static void swap(List list ,int x,int y)指定下标,对List集合中的对象换位置

l  static void shuffle(List list)对List集合中的对象,随机换位置

l  将线程不安全集合变成线程安全集合 synchronized开头的方法

 

15.  集合数组的互转

  数组转成集合  Arrays类方法isList , 传递数组,返回集合

  数组转成集合后,改变集合长度不能做,如果做了,出现不支持的操作异常

 

  集合转数组Collection中方法 toArray() 将集合转成数组,传递数组,返回数组

 

16.  静态导入

  JDK1.5的新特性,简化书写

  import static ...静态成员或者是静态方法

 

17.  可变参数

  JDK1.5的新特性

  定义方法啊,计算两个正数和,返回结果,计算的整数的个数在无限的增长

  采用可变参数处理

  格式

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

  可变参数的使用条件:当定义一个方法时候,参数的数据类型已知,但是参数的个数不同,可变参数就是一个数组

  可变参数的使用注意事项:

l  一个方法中,只能定义1个可变参数

l  如果方法中有多个参数,可变参数只能写咋参数列表的最后

 

18.  异常的概述

 异常:程序的运行时候出现的不正常现象

 异常的产生过程和处理方式

 异常产生,是JVM创建的一个对象,抛给调用者,如果调用者不处理,继续抛出,直到JVM接收到异常后,终止程序。

 异常也是对象,既然是对象,对象的描述类,ArithmeticException类是用来描述数学中的算术问题的类

 NullPointerException,描述空指针异常的类

 ArrayIndexOutOfBounds 描述数组越界异常类

 

19.  异常的继承体系

  Throwable,类是所有异常和错误的父类

    |-- Error 错误

    |-- Exception 异常

  错误:程序出现了严重的问题,不修改代码,根本不能运行,人得了非典,艾滋,癌

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

  Exception类是所有异常的父类

   |-- 非RuntimeException

   |--   RuntimeException

 

 Throwable中的方法:

l  String toString()重写Object类的方法,异常信息的详细描述?

l  String getMessage() 返回异常信息的简短描述

l  void printStackTrace() 异常信息输出到控制台

 

20.  异常的第一种处理方式 try catch处理

  格式

    try{

       检测的代码

       有可能发生异常的代码

     }catch(异常类 变量){

        异常的处理方式(循环,判断,调方法)

        有catch,就可以称为异常被处理了

     }

 

21.  异常的第二种处理方式,抛出异常

  throw 手动抛出异常,后面写的是new 异常对象

  throws 方法声明抛出异常,后面写的是异常类

  throw 写在方法中,throws写在方法的声明上

 

22.  finally代码块

  finally可以跟随try出现,也可以跟随try...catch出现

  finally代码块中的程序,必须要运行

  finally实际的开发意义,释放资源

23.   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值