天天看点

黑马程序员-集合(补充总结)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

①Set集合:

特点:

不能够存储重复元素

无序的集合(元素的存与取顺序不同)

线程不同步的集合,有安全隐患

Set集合的继承关系:

HashSet集合:

底层: 哈希表结构

无序

LinkedHashSet集合:

底层: 哈希表结构 + 链表结构

有序

它是HashSet集合的子类

TreeSet集合:

底层: 二叉树结构

无序的集合(元素的存与取顺序不同)

有序(元素按照自然排序接口 或者 比较器接口来排序)  

HashSet:

如何保证元素的唯一性?

重写hashCode()方法 与 equals() 方法

HashSet集合对象 底层是通过 HashMap集合来创建的

TreeSet:

如何保证元素的唯一性与排序的?

方式1: 通过实现自然排序接口 Comparable [ compareTo(Object obj ) ]

方式2: 通过实现比较器接口   Comparator [ compare( Object o1, Object o2 ) ]

返回值:

等于0 : 代表 两个对象相同, 新元素不存储到集合

大于0:

小于0:

代表 两个对象不同, 新元素存储到集合, 同时排序

可以按照指定的规则进行排序 

注意: API中提供的类, 通常都实现了 Comparable接口,而我们自己创建的类没有实现,所以,自己的类 需要实现接口

②java中参数的传递:

如果传递的是基本数据类型(包含String类型):

形参的改变,对实参 没有影响

如果传递的是引用数据类型 

形参的改变, 对实参 有影响

③Map: 双列集合

特点:

键是唯一的

值可以重复的

Map集合体系关系

Map:

|- HashMap

|- TreeMap

Map集合中的方法:

添加功能:

V put(K key, V value)

删除功能:

void clear()

V remove(Object key) 

判断功能:

boolean containsKey(Object key) 

boolean containsValue(Object value)

boolean isEmpty() 

获取功能:

Set<Map.Entry<K,V>> entrySet()

V get(Object key) 

Set<K> keySet()

Collection<V> values() 

长度功能:

int size()

HashMap:

特点:

底层:哈希表结构

如何保证HashMap集合中key是唯一的???

重写key 所对应的类中的 hashCode() 与 equals() 方法

注意: 如果 key 是API中提供的类,不需要自己重写,因为API已经重写好了, 而自己定义的类,必须要重写

TreeMap:

特点:

底层: 二叉树结构

如何保证TreeMao集合中的key 是唯一和排序的??

有两种方式:

方式1:  实现 自然排序接口  

Comparable {  compareTo(Object o) }

方式2:  实现 比较器接口

Comparator { compare(Object o1, Object o2) }

注意: 具体如何比较的代码 需要自己来实现

④Map集合遍历的两种方式:

方式1: 键 找 值

a: 获取集合中所有的key

b: 获取到每一个key

c: 通过当前的key, 获取到对应的值 value

方式2: 键值对, 找键,找值

a: 获取集合中所有的键值对对象 

b: 获取到每一个键值对对象

c: 通过键值对对象, 找键,找值

⑤HashMap集合与 Hashtable集合的区别?

Hashtable: 

是一个Map集合

它是一个线程同步的集合, 安全

键不能为null , 值不能为null

HashMap:

它是一个线程不同步的集合

键可以为null, 值可以为null