Map集合总结
来源:互联网 发布:软件代工 电影 编辑:程序博客网 时间:2024/06/10 00:07
Map集合: 该集合存储键值对,一对一对往里存。而且要保证建的唯一性。
重点方法:entrySet,keySet(Map集合的特有方法:取出集合中的元素)
|--Map
|--HashTable:底层是哈希表数据结构,不可以存入null键和null值,线程是同步的;
|--HashMap:底层是哈希表数据结构,可以存入null键和null值,线程是不同步的。
|--TreeMap:底层是二叉树数据结构,线程不同步,可以给Map集合排序。
发现这个结构和Set集合很像,其实Set集合底层调用的是Map集合。
1.什么是Map
Map是一种保存键值对的容器, 键是唯一, 可以根据键来查找值.
*2.HashMap
键和值可以存入null,线程不同步
使用哈希算法对Key对象去重复, 和HashSet原理相同
当存入一个键值对的时候, 先对Key对象调用hashCode方法获取一个哈希值, 在集合中查找是否有哈希值相同的对象
如果没有相同的, 直接将键值对存入. 如果有哈希值相同, 则和哈希值相同的Key对象进行equals比较
比较结果为false就直接存入, 如果比较结果为true, 那么用新的Value替换旧的Value
3.LinkedHashMap
HashMap的子类, 原理和HashMap相同, 可以保留存储顺序
4.Hashtable
和HashMap原理相同,但是Hashtable的键和值不能为null
线程同步,所以线程不安全, 效率低, 已被淘汰
* 5.TreeMap
使用二叉树算法对Key对象进行排序, 和TreeSet原理相同
有两种指定排序算法的方式:
默认使用自然顺序: 使用Key对象的compareTo方法来比较
传入比较器顺序: 在TreeMap的构造函数中传入Comparator之后, 就会使用Comparator的compare方法
* 6.迭代Map集合
a.keySet():
先调用Map的keySet()获得所有Key对象组成的Set
然后遍历这个Set得到每一个Key
再用Key对象从Map中获取Value
对应代码:
Java代码
Set<Person> s = tm.keySet();
for (Person p : s) {
System.out.println(p+"===="+tm.get(p));
}
b.entrySet():
先调用Map的entrySet()方法获得所有Entry组成的Set
循环遍历这个Set得到每一个Entry
再获取每个Entry的Key和Value
对应代码:
Java代码
Set<Entry<Person,Integer>> s = tm.entrySet();
for (Entry<Person, Integer> ent : s) {
System.out.println(ent.getKey()+" :"+ent.getValue());
}
*在EntrySet()中有以下的几个方法:
Equals(),getKey(),getValue,hashcode(),setValue()
- java集合------Map集合总结
- Map集合总结
- JAVA_集合总结Map
- Map集合总结
- Map集合总结
- Map集合总结
- Map集合总结
- map集合总结
- Map集合总结
- map集合总结
- 集合-Map总结
- 总结基础理论 Map集合
- (黑马程序员)Map集合总结
- Java知识总结-Map集合
- java集合框架---Map总结
- 关于集合Map的总结
- java中Map集合总结
- 20160125--集合Set-Map+总结
- 黑马程序员之银行系统学习笔记
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
- uva 716 - Commedia dell' arte(置换)
- 【索引】Permutation::Exercises: Beginner
- 最短路复习
- Map集合总结
- 记一次C++与lua连接
- 【索引】Permutation::Exercises: Intermediate
- 关于cocos2dx下的ccrandom()的范围
- Android ArrayListAdapter<T>泛型类
- C++ 值传递 引用传递
- java 引用类型的概念
- Java线程
- 裸设备 1