黑马程序员——集合总结2

-------------- android培训、java培训、期待与您交流! -------------

Set

       接口

       无序,元素唯一

HashSet

       数据结构:哈希表

       不同步

       如何保证元素的唯一性:

1, 获取哈希值:添加的自定义对象需要覆盖hashCode()方法,写自己的哈希值获取方法。

 

2, 判断对象内容:覆盖equals()方法,提供自身判断对象是否相等的方法。

 

容器在添加对象时,会自动调用hashCode和equals方法。

 

 

TreeSet

       数据结构:二叉树

       不同步

       对元素进行排序。

       如何排序的?

              排序方法一:

              让元素具备比较性。

              添加的自定义对象需要实现Comparable 接口,并覆盖compareTo()方法。

              compareTo方法返回值有三个:正、 负 、0 ;(大于、小于、等于指定对象)

              如果相等,则不能添加到容器。(保证元素的唯一性)

              排序方法二:

              比较器:让TreeSet集合在初始化时就具备比较性。

                            创建一个类实现Comparator接口,覆盖compare方法。

                            将这个类对象作为参数传递给TreeSet构造函数。

LinkedHashSet

       在哈希表的基础上加入了链表结构,

       实现元素唯一性的同时,保证了有序。

 


 

Map集合(重点)

独立的体系

特点:

1,一次存储一对对象

2,这对对象,左边叫键,右边叫值,map集合中存储的都是键值对。

3,键与值之间有对应关系(映射)。

4,在多键值对中,键必须保证唯一性。

 

 

Collection 和 Map的区别:

Collection:一次存储一个对象,

Map        :一次存储一对具有映射关系的键值对对象。

 

Map较为常用,原因:

       可以将存储的对象进行名称的对应。查找对象时比较方便。

 

什么时候使用map集合呢?

       分析问题时,如果出现了映射关系时,优先想到map集合

       如果关系中一部分是有规律的编号,可以考虑数组。

 

了解Map集合的基本功能

1,添加

       value put(key,value);新值覆盖旧值,返回key对应的原来的值,原来没有返回null

       void putAll(Map)

      

 

2,删除

       clear()

       value remove(key):返回被移除键对应的值

3,判断

       containsKey(key);

       containsValue(value)

       isEmpty();

4,获取。

       value get(key);通过指定的键获取具体的对应的值。没有该键返回null。

                                   //03---null。

       size():

      

       Collection<v> values():获取map集合中所有的值的集合.

      

       如何获取map中所有的键值对呢?

      

       1,Set<K> keySet()方法:获取map集合中的所有的键。并将这些键存储到一个set集合中。

                                          有了set集合,就有了迭代器。在取出每一个键时,

                                          通过map集合的get方法就可以获取到key对应的值。

      

       Collection是单列集合。Map是双列集合

       为了便于理解.

       Collection里面存储的是单身汉.Map集合存储时夫妻.

      

       Map集合的取出元素的原理:将map集合转成Set集合.在迭代.

      

      

       2,Set<Map.Entry<key,value>>entrySet(): 获取map集合中所有的键值关系,并将关系存储到Set集合中。

                                                 这个关系对象的类型就是Map.Entry.

                                                 对Set集合进行迭代,迭代出的关系对象,可以通过自己的getKey,getValue方法获取键和值。

 

 

Map中常用的对象

三个:

Hashtable:(被HashMap替代)

       内部是哈希表结构,

       不允许存储null键,null值。

       同步

 

HashMap:

       内部是哈希表结构,

       允许存储null键、null值

       不同步

       替代了Hashtable

 

TreeMap

       内部是二叉树结构

       可以对Map集合中的键值排序


 

------------- android培训、java培训、期待与您交流! -------------

你可能感兴趣的:(黑马程序员——集合总结2)