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

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

2014-11-12 21:06 323 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐