java之集合框架总结

来源:互联网 发布:恒腾网络股票行情 编辑:程序博客网 时间:2024/06/08 05:31

第一部分:集合框架

一、集合框架的特点及与数组的区别

存储对象的容器,方便对多对象进行操作

数组的长度固定,集合不固定

集合可以存储不同类型的对象

集合内添加的是元素的引用


二、Collection接口

Collection的共性方法

add(E e)  添加元素

addAll(Collection<? extends E> c)  添加指定集合中的所有元素

remove(Object o)  移出元素

removeAll(Collection<?> c)  移出指定集合中包含的元素

retainAll(Collection<?> c)   移出指定集合中没有包含的元素

clear()   清空集合中的元素

contains(Object o)   判断元素是否存在

containsAll(Collection<?> c)   判断指定集合中的元素是否存在

equals(Object o)  比较集合与指定对象是否相等

hashCode()  返回对象的哈希码值

isEmpty()  判断集合中的元素是否为空

size()  获取集合的长度(元素个数)

toArray()   将集合转换成数组

toArray(T[] a)  将集合转换成指定运行时类型的数组

iterator()  返回该集合的迭代器

迭代器是集合接口的内部类,取出的动作是集合内部的事情,用方法不足以描述,所以定义成内部类, 不同的容器数据结构不同,取出方式不同,但取出都有共性内容(判断和取出)所以抽象成接口

1、List

List集合的特点:

元素是有序的,元素可以重复,以为该集合体系有索引

凡是可以操作角标的方法都是该体系特有的方法

List的共性方法:

add(index,element  将元素添加到指定索引处

addAll(index,Collection)  将某个指定集合中的全部元素从指定索引处开始添加

remove(index)  移出指定索引处的元素

set(index,element)  修改指定索引处的元素为指定新元素

get(index)  获取某一指定索引处的元素引用

indexOf  在集合中查找元素

lastIndexOf  从集合后面开始查找指定元素

subList(start,end)  获取子集  获取从指定位置到另一指定位置的处的全部子集元素

listIterator  返回List集合的特有比较器(可以使用角标操作数据)



(1)ArrayList:

1)ArrayList是数组结构的:

数组结构集合的特点是查询快、增删慢

2)ArrayList是线程不同步的

3)ArrayList的长度可变原理:

初始化时new一个长度为10的ArrayList集合,当存储的元素大于10个时,又重新new一个长度比原来增加一半的ArrayList集合,将原有数据迁移过去

4)ArrayList的方法:

和List接口的方法基本一致,可以参照List中的方法


2)LinkedList

1)链表结构:增加、修改快,查询慢

2)线程不同步

3)方法:

addFirst  在集合的开头添加元素,无返回

offerFrist 在集合的开头处插入元素,返回boolean

addLast  在集合的末尾添加元素

getFirst  获取集合开头处的元素

peekFrist  获取但不移除此列表的第一个元素,如果列表为空,则返回null

getLast  获取列表最后一个元素

removeFirst  移出此列表的第一个元素

pollFrist   获取并移除此列表的第一个元素

removeLast  移出此列表的最后一个元素

(3)Vector

和ArrayList的区别是Vector是线程同步的,当元素填满初始化的集合长度后,Vector会重新new一个原来长度2倍的Vector集合,一般情况下建议使用ArrayList,因为ArrayList效率高

2、Set

Set集合的特点:

元素是无序的(存入的顺序和取出的元素不一定一致,元素不可以重复

Set是Collection框架中的一员,拥有Collection中的共性方法,Set中没有定义特有方法

(1)HashSet

底层数据结构是哈希表

通过元素的两个方法保证元素的唯一性 如果hashCode相同就不调用equals(复写两个方法)

对于判断元素是否存在和删除元素,依赖的是元素的hashCodeequals方法

(2)TreeSet

底层数据结构是二叉树

可以对Set集合的元素进行排序

通过compareTo方法保证元素的唯一性和有序性

TreeSet排序的两种方式

让元素自身具备比较性

元素需要实现Comparable接口,覆盖compareTo方法 这种方法也成为元素的自然顺序,也叫默认顺序

在集合初始化时传入比较器对元素可比较

当元素不具备比较性或具备的比较性不是所需要的, 就定义比较器(Comparator比较器,方法compare、 equals)传给集合的构造函数

当两种排序方式都存在时,以比较器为主

3、Map

1、Map集合特点:

Map集合存储的元素以键值对的形式存储,而且要保证键的唯一性


2、Map的共性方法:

put(K key, V value)   添加元素到该集合
putAll(Map<? extends K,? extends V> m)  添加指定Map集合中的所有元素到该集合
clear()    清空集合中的元素
remove(Object key)  移出指定元素
get(Object key)  返回指定键对应的值
keySet()   返回此集合的键集的Set视图
entrySet()   返回该集合的键值对映射关系的Set视图
size()   返回该集合的长度
values()   返回该集合所有值的Collection视图
containsKey(Object key)  判断集合中是否包含指定键
containsValue(Object value)  判断集合中是否包含指定值
isEmpty()    判断集合是否为空(是否有元素)
equals(Object o)  比较指定的对象与映射是否相等
hashCode()   返回此集合的哈希码值

(1)HashTable

哈希表数据结构

不可以有nullnull

是线程同步的

(2)HashMap

哈希表数据结构

可以有nullnull

是线程不同步的

(3)TreeMap

二叉树数据结构

可以给键排序

线程不同步

第二部分:集合框架工具类

1、Collections

(1)Collections是集合框架的工具类,定义了用于操作集合的静态方法

(2)方法:

max  取集合中的最大值

sort  给集合进行排序

binarySearch  折半查找,使用此方法前需要用Collections中的Sort方法对集合进行排序 

fill 替换指定集合中的全部元素

replaceAll(list,old,new)  将指定集合中的某一元素替换成新的元素

reverse  反转集合的排序

reverseOrder 返回一个强行逆转自然顺序的比较器

swap(List,int,int)  交换List中的两个指定元素的位置  

shuffle 随机置换元素

toArray 指定类型的数组长度不足,则新建一个集合长度的数组,指定数组长度比集合长度长,则多余部分用null填充

集合变数组为了限定集合


0 0
原创粉丝点击