第八章 集合

来源:互联网 发布:网络的安全机制有哪些 编辑:程序博客网 时间:2024/06/05 11:46

8.1 集合和数组区别:

数组:一旦声明了数组长度无法改变,只能保持指定的数据类型,元素的数据类型必须相同,不能混排。

集合:长度和动态扩容,元素类型可以是任何类型,可以混合使用。

8.2 List接口

ArrayList:

ArrayList可以看作可变长度的数组,在内存中存储空间是连续的。

优点:随机访问或遍历时效率较高。

缺点:添加和删除元素时效率较低。

LinkedList:

采用的链表结构进行存储,在内存中存储空间是不连续的。

优点:添加和删除元素是效率较高

缺点:随机访问或遍历时效率较低。

Vector:

Vector类似与ArrayList的线性结构,Vector是基于线程安全的,在多线程中使用;ArrayList是非线程安全的,效率较高

Stack:

Stack(栈):后进先出(Last In First Out) LIFO

Quence:

队列:先进先出(First In First Out) FIFO

8.3 Set接口:

Hashset:

HashSet:采用哈希表的方式存储。

优点:查询,添加,删除效率较高

 

HashSet如何保证其元素的唯一性?

在添加元素时调用hashCode()获取元素的哈希码,判断要添加元素的哈希码是否相同,如果相同调用equals方法比较内容是否相同;如果哈希码不相同,equals方法将不再调用。

 

如果两个对象的equals比较的结果为true,其hashCode一定相同;反之则不成立。

LinkedHashSet:

LinkedHashSet继承了HashSet,采用的是哈希码+链表的结构进行存储,其中的元素有序(添加顺序)。

TreeSet:

TreeSet:采用二叉树的方式进行存储,其中元素有序(大小顺序)。要添加元素是必须实现Comparable接口或传入一个比较器(需要实现Comparator接口)

8.4 Map接口:

HashMap:

HashMap类似于HashSet,采用的是哈希码进行存储无序。

Hashtable:

Hashtable与HashMap类似,不同之处主要是以下两点:

1.HashMap是非线程安全的,而Hashtable是线程安全的

2.HashMap中的键和值都运行为null,而Hashtable不允许。

LinkedHashMap:

LinkedHashMap是HashMap的子类,类似于LinkedHashSet,采用的是哈希表+链表的结构存储数据。其中元素是有序的(添加顺序)

TreeMap:

TreeMap采用二叉树的方式存储,与TreeSet类似。其中的元素有序(大小顺序)。

要求添加的元素必须是可比较大小

1.实现Comparable接口

2.创建一个比较器(实现Comparator接口)

在添加元素时根据键的自然顺序进行存储数据。

8.5 Collections 类:

Collections类是一个对Collection集合进行操作的工具类型,其中提供一些静态的工具方法方便操作

 

sort()

reverse()

binaySearch()

.....

原创粉丝点击