广州尚学堂5月5日部分笔记

集合框架的优势:

传统的容器(数组)在进行增、删等破坏性操作时,需要移动元素,可能导致性能问题;同时添加、删除等算法和具体业务耦合在一起,增加了程序开发的复杂度。并且提供一套性能优良,使用方便的接口和类。

Collection:他的下级是这两个List和Set

Collection接口表示一个容器,容器中只能存储引用数据类型,建议存同一类型的引用类型,方便后续遍历等操作。

他的元素是有序并且可以重复的,称为List接口:

、通过索引来确定元素的顺序,有序的 collection(也称为序列)。可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素

无序的唯一的称为Set接口:

Set接口的实现类常见的有HashSet、LinkedHashSet、TreeSet

快速遍历:

Collection继承Iterable接口,表示集合支持快速遍历。Iterable接口定义了一个方法iterator()用于获取集合的迭代器,是一个Iterator接口类型,iterator()内部返回一个实现类实现类Iterator接口。这个实现类一定具有hasNext和next方法用于判断是否有下一个元素和获取下一个元素。快速遍历就是基于迭代器工作的。

ListIterator 继承于Iterator,在Iterator的基础上提供了以正向遍历集合,也可以以逆序遍历集合。

hasNext/next 以正向遍历

hasPrevious/previous 以逆序遍历

HashSet是Set接口的实现类,底层数据结构是哈希表。

HashSet是线程不安全的(不保证同步)

如果向HashSet中存储元素时,元素一定要实现hashCode方法和equals方法

优点:添加、删除、查询效率高;缺点:无序

LinkedHashSet是Set接口的实现类,底层数据结构哈希表+链表

哈希表用于散列元素;链表用于维持添加顺序。

如果要添加自定义对象元素,也需要重写hashCode和equals方法。

TreeSet 是Set接口的实现类,底层数据结构是二叉树。

TreeSet 存储的数据按照一定的规则存储。存储规则让数据表现出自然顺序。

内部比较器与外部比较器

如果知道源代码才可以使用内部比较器,无权修改别人代码或者不知道源代码时可以用外部比较器,

内部比较器的定义:

当一个自定义对象实现Comparable并实现compareTo方法时,通过指定具体的比较策略,此时称为内部比较器。

外部比较器的认识:

Comparator 位于java.util包中,定义了compare(o1,o2) 用于提供外部比较策略。

TreeSet接受一个指定比较策略的构造方法,这些比较策略的实现类必须实现Comparator

接口。

如果只使用一次,可以用匿名内部类进行优化

Map接口:

Map接口称为键值对集合或者映射集合,其中的元素(entry)是以键值对(key-value)的形式存在。

Map 容器接口中提供了增、删、改、查的方式对集合进行操作。

Map接口中都是通过key来操作键值对,一般key是已知。通过key获取value。

Map的常用方法:

增:put/putAll

删:clear/remove

改:put

查:get/containsKey/containsValue

其他:isEmpty/size

Map的接口遍历:

通过keySet() 返回map中键的set集合

map中以键值对作为元素,键值对在map中称为entry,entrySet返回键值对的set集合。

Map接口的实现类:

HashMap、LinkedHashMap、TreeMap

而HashMap 是Map的实现类,key以HashSet存储。

HashMap 线程不安全,jdk1.2;Hashtable是HashMap的线程安全版本,jdk1.0出现

向HashMap中存储元素时,key一定要实现hashCode和equals

一般建议使用String作为Map接口的key

LinkedHashMap:

Map接口的实现类,key以LinkedHashSet存储。

哈希表散列key,链表维持key的添加顺序。

TreeMap:

Map的实现类,key以TreeSet存储。

总结:

ArrayList  :  存储结构是顺序表;有序;不唯一;索引查询,效率高;但是添加或者删除效率低

LinkedList  :  存储结构是链表;有序;不唯一;查询效率低,但是添加或者删除效率高

HashSet  :  存储结构是哈希表,无序,唯一,查询效率高,添加删除效率高

HashMap  :    存储结构是哈希表,Key无序,Key唯一,查询效率高,添加删除效率低

LinkedHashSet  :  存储结构是哈希表+链表,有序,唯一,查询效率和添加删除效率都高

LinkedhashMap  :    存储结构是哈希表+链表,Key无序,Key唯一,查询效率和添加删除效率都高

Treeset  :  存储结构是二叉树,有序(升序),唯一,查询效率中等,添加删除效率中等

TreeMap  :  存储结构是二叉树,有序(升序),Key唯一,查询效率中等,添加删除效率中等

你可能感兴趣的:(广州尚学堂5月5日部分笔记)