【幻化万千戏红尘】qianfengDay16-java基础学习:HashMap,HashTable,TreeMap

 

 

 

课程回顾:

 

数组

异常

常用类

集合

 

 

 

 

今日内容:

集合:动态存储多个对象

JAVA中集合的分类:

1、Collection<E>

1、List<E>:

1、ArrayList<E>

2、LinkedList<E>

2、Set<E>:

1、HashSet<E>

2、TreeSet<E>

3、LinkedHashSet<E>

2、Map<K,V>:存储键值对(K-V)的元素

1、HashMap<K,V>

2、TreeMap<K,V>

 

HashMap<K,V>:存储键值对信息

键不可重复

存储的键为自定义类时,一般重写hashCode和equals方法,进行验重

 

 

常用方法:

put:如果键不存在,则添加,否则就修改并将原来的值返回

containsKey:验证是否包含指定的键

containsValue:验证是否包含指定的值

remove:移除指定键的元素并返回对应键的值

size:获取元素个数

keySet:获取所有键的Set集合对象

get:获取指定键对应的值

values:获取所有值的集合对象

 

 

Map集合的遍历方式:

1、keySet:获取所有键的Set集合对象Set<K>

2、entrySet:获取所有元素的Set集合对象Set<Entry<K,V>>----(Map集合特有的)

 

Map.Entry<K,V>:是Map接口的静态内部接口

每个对象记录的就是Map集合中的每个元素

 

常用方法:

getKey:获取当前元素的键

getValue:获取当前元素的值

 

 

练习:请创建HashMap<Student,Phone>存储学生手机信息

注意学生的重复(结合HashSet)

 

练习2:请使用随机数生成100个[A-F]字母

HashMap<Integer,Character>

请统计每个字母出现的次数,请使用HashMap<Character,Integer>进行存储

 

 

TreeMap<K,V>:存储键值对,根据键进行排序

键为自定义类时,要求必须可排序,也就是实现比较器接口

 

常用方法:

put:

first

last

ceiling

floor

higher

lower

pollFirst

pollLast

 

 

 

 

 

扩展之HashTable:

HashMap和HashTable的区别?

HashMap:

1、实现的是AbstractMap<K,V>

2、允许有null键和null值的存在

3、containsKey和containsValue方法

4、不安全

HashTable:

实现的是Dictionary<K,V>

不能有null键或null值的存在

contains:验证是否存在指定的值

安全的

 

HashTable<K,V>:存储键值对信息

 

常用子类:

Properties:属性集类

将键值对信息保存到流中或从流中加载键值对信息

 

常用方法:

load:从指定的流中加载键值对信息

store:将属性集对象中的键值对信息保存到流中

setProperty:设置键值对信息,键存在则修改,键不存在则添加

getProperty:获取指定键的值

 

 

集合小结:

List:有序,可重复,有索引

Set:无序,不可重复,无索引

Map:存储键值对,常常用于记录和查询,很少用于遍历输出

 

读和改效率:

Hash*:两者效率都很高

ArrayList:读(索引)效率很高,写和删效率较低

LinkedList:读效率较低,写和删效率较高

 

 

数组和集合:

开发中优先选择数组

再考虑集合

 

 

 

 

Map<Student,HashSet<Phone>>

TreeMap<Student,TreeSet<GrilFriend>>

 

posted on 2016-08-04 11:10  幻化万千戏红尘  阅读(105)  评论(0编辑  收藏  举报