黑马程序员-------集合(Set,Map)
来源:互联网 发布:php 定时任务管理系统 编辑:程序博客网 时间:2024/06/09 12:38
------- android培训、java培训、期待与您交流! ----------
Set接口里的方法和Collection中的方法是一致的。Set元素是无序的,元素不可以重复。常见的子类对象有HashSet和TreeSet。
HashSet:底层使用的是哈希表数据结构。HashSet集合通过元素的两个方法hashCode和equals,来保证元素的唯一性。如果元素的hashCode值相同,则判断equals是否为true。如果元素的hashCode值不同,不会调用equals 。先判断hashCode值,如果值相同则会进行比较,如果值不同则不会进行比较。在描述对象的时候,如果该对象要被存到集合中,通常情况都要重写hashCode和equals方法。
HashSet 底层数据结构是哈希表。线程是不同步的。
Hash基础代码。
代码演示:
HashSet练习:往hashset集合中存入自定义对象。姓名和年龄相同为同一个人。
TreeSet:底层数据结构是二叉树。可以对Set集合中的元素进行排序,通过compareTo方法return 0,保证元素的唯一性。
TreeSet的第一种排序方式:让元素自身具备比较性,让元素实现Comparable接口,覆盖compareTo方法,这种排序方式称为元素的自然顺序,或者默认顺序。排序时当主要条件相同时要判断一下次要条件。
代码演示:
TreeSet的第二种排序方式:当元素自身不具备比较性,或者具备的比较性不是所需要的时,就需要让集合自身具备比较性,自定义一个比较器,将比较器对象作为参数传递给TreeSet集合的构造函数,在集合初始化时就有了比较方式。定义一个类,实现Comparator接口,覆盖compare方法。
代码演示:
TreeSet练习:按照字符串长度排序。字符串本身具备比较性,但是他的比较性不是所需要的。这时只能使用比较器。
Map<K,V>集合:该集合存储键值对。一对一往里存,而且要保证键的唯一性。
|--HashMap:基于哈希表的Map接口的实现。此实现提供所有可选的映射操作,并允许使用null 值和null键。
(除了非同步和允许使用null 之外,HashMap 类与Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 将 Hashtable替代,JDK1.2.效率高。
|--TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator(比较器) 进行排序,具体取决于使用的构造方法。
和Set很像。其实大家,Set底层就是使用了Map集合。线程不同步。可以用于给Map集合中的键进行排序。
Map集合的基本方法:
1 添加元素。
put(key,value);
putAll();
2 删除元素。
clear();
remove(Object obj);
3 判断元素。
containsKey();
containsValue();
equals(Object obj);
4 获取元素。
get(Object key);
size();
vilues();
代码演示:
Map
(1)Map是一个键值对形式的集合。它的元素都是由键和值组成。
(2)Map和Collection的区别?(面试题)
A:Map 是由键值对组成的集合,Map的键是唯一的,值可以重复。
B:Collection 是有单列数据组成的集合,它的儿子List是可以重复的,Set是唯一的。
(3)HashMap和Hashtable的区别?(面试题)
HashMap:线程不安全,效率高。允许null键和值。
Hashtable:线程安全,效率低。不允许null键和值。
Map结合的取出原理:将map集合转成set集合,再通过迭代的方式取出。
map集合的两种取出方式:
1 keySet:将map中所有的键存到set中,在用get方法取出。
因为set具备迭代方法,所以可以用迭代的方式取。
2 Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了Set集合中,
而这个关系的数据类型就是Map.Entry.
代码演示:
Map集合的俩个小练习代码实现部分
一 需求:要求:对学生对象的年龄进行升序排序。
代码演示:
二 需求: "sdfgzxcvasdfxvdf"获取该集合中各字母出现的次数。
代码演示:
- 黑马程序员-------集合(Set,Map)
- 黑马程序员-集合(Set)
- 黑马程序员 泛型、Set集合类和Map集合类
- 黑马程序员--java基础--集合框架Set,集合框架map
- 黑马程序员-集合(Map)
- 黑马程序员----集合(Map)
- 黑马程序员_java集合(1) Collection & List & Set & Map
- 黑马程序员-- 九、集合之Set和Map
- 『黑马程序员』---java--集合--Set+Map
- 黑马程序员——API集合框架-Set、Map
- 黑马程序员--集合框架:List、Set和Map体系
- 黑马程序员----牛叉的集合之Set,泛型,Map
- 黑马程序员-集合-Set和Map和Collections
- 黑马程序员——集合之Set和Map
- 黑马程序员-------Set集合
- 黑马程序员-------Set集合
- 黑马程序员--Set集合
- 黑马程序员-----Map集合
- hadoop基础------虚拟机(一)---虚拟机简介
- ????P2P网贷系统虚拟币众筹比特币交易所平台如何选择软件公司
- Android android:persistentDrawingCache的几个默认属性值介绍
- 读书备忘
- 第二十篇 设计模式--解释器链模式
- 黑马程序员-------集合(Set,Map)
- android基础学习之强引用和弱引用的对比理解
- Mongodb操作-常用命令
- 30款css3实现的鼠标经过图片显示描述特效
- RC串联电路
- 收藏
- C#泛型接口实例
- android c Crash
- Nginx 中 upstream 机制的实现