------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