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(复写两个方法)
对于判断元素是否存在和删除元素,依赖的是元素的hashCode和equals方法
(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
哈希表数据结构
不可以有null键null值
是线程同步的
(2)HashMap
哈希表数据结构
可以有null键null值
是线程不同步的
(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填充
集合变数组为了限定集合
- java之集合框架总结
- Java集合总结之Collection整体框架
- Java集合总结之Set整体框架
- 黑马程序员之java--集合框架总结
- java学习之集合框架总结
- Java集合总结之Collection整体框架
- Java集合总结之Collection整体框架
- Java集合总结之Collection整体框架
- Java集合总结之Collection整体框架
- [总结]数据结构之jcf(java集合框架)
- Java集合总结之Collection整体框架
- Java集合总结之Collection整体框架
- Java集合框架总结之Map集合的使用
- Java集合框架总结
- java集合框架总结
- Java集合框架总结
- Java集合框架总结
- java集合框架总结
- 第12周项目 程序阅读(5.e)
- MVP项目Philm代码分析
- .NET的EF框架中:在应用程序配置文件中找不到名为“”的连接字符串问题
- C中struct的函数实现
- Python基础:03序列:字符串、列表和元组
- java之集合框架总结
- 第12周 项目四-点、圆关系(5)
- 转载自matlab中文论坛
- 第十周项目 0 阅读程序(2)
- HDU 人见人爱A^B
- ACM-字母统计
- 第十一周项目五 点,圆,柱类族的设计
- vim应用解析1
- 十分钟学习Python的进阶语法