1. Set集合特点 无序,无下标,不重复 和 List正好相反 而且,Set接口中的方法和Collection一致 获取Set集合只能有两种方式,一个迭代器,一个增强for 2. HashSet集合 底层是一个哈希表,存储哈希值,桶状结构,查询快 存储到HashSet集合中的对象,必须实现hashCode和equals方法,否则无法判断是否重复元素 重写hashCode和equals方法,都是安装类中的成员变量来进行的,需要的就是成员变量的值。 如果日后你写的类,有可能存储到哈希表中,重写两个方法,但是类中没有成员变量,不重写方法 哈希值,是JVM根据底层哈希算法计算出的十进制数,虚拟的地址,哈希值的出现目的就为了集合而来 面试题,对象equals返回值,对象的哈希值必须相同,如果哈希值相同equals不一定返回值,是hashCode协定规定的,重写方法要一起完成 3. LinkedHashSet 有序的Set集合,开始版本JDK1.4线程不安全集合,基于链表的哈希表 4. TreeSet 底层是二叉树结构,线程不安全集合,运行速度快 对于存储到TreeSet集合中的对象,会按照对象的自然顺序进行排序,如果对象没有自然顺序,抛出异常 TreeSet的排序依据,对象的自然顺序,比较器--TreeSet自己比较 对象的自然顺序,类实现java.lang.Comparabe接口重写compareTo方法 比较器TreeSet自己比较,定义类实现java.util.Comparator接口重写compare方法,将比较器对象,传递到TreeSet集合构造方法 TreeSet优先选择比较器,如果有比较器,有没有自然顺序不重要 会画二叉树图 5. Map集合 存储键值对映射的集合 集合中,键不能重复,每个键只能映射一个值 方法:put get containsKey containsValue 发现接口中,没有迭代器 6. 作业任务 今天的案例,写案例代码 Map集合的获取方式 Map接口中的方法keySet entrySet keySet 将Map中所有的键,存储到Set集合 entrySet 将Map中的映射关系对象Entry存储到Set集合 Map<String,HashMap<String,String>>
|