集合
容器
和数组的区别:
-
数组可以存基本数据类型(值),也可以存引用数据类型(地址值);长度不可变;空间连续,查改快。
-
集合只能存引用数据类型(对象的引用),存储基本数据类型会自动装箱成包装类对象;长度可变;空间不连续,增删快。
集合
数组与集合
A.数组既可以存引用数据类型数据 也可以基本数据类型数据 集合只能存引用数据类型数据
B.数组长度是固定 集合的长度是可变
分类: 单列集合与双列集合
Collection
A.常用的方法
B.遍历方式
a.将集合转换数组 b.使用迭代器 c.使用增强for循环
List
特点:有序 有索引 可以重复 可以设置null值
方法:
void add(int index, E element) 在指定的位置增加元素
E get(int index) 获取指定索引的元素
E remove(int index) 根据索引来删除元素
E set(int index, E element) 根据索引来修改元素
ArrayList
特点:
A.以数组的方式来进行存储 查询快 增删慢
B.实现不是同步的 在多线程中是不安全
C.初始容量为 10
遍历方式: 使用普通的for循环
数据结构-栈: 先进后出
数据结构-队列 先进先出
java.util.Collection 是一个集合接口
java.util.Collections 是一个包装类
Collections.sort排序
Collection
单列集合,是一个接口
List
有序,可重复,是一个接口,是Collection接口的一个子接口,是一个有序的集合。
List接口常用方法:
-
add添加元素
-
get获取指定元素位置
-
indexOf返回首次出现下标
-
remove移出
-
set替换指定元素
-
subList 返回区间子集和
ArrayList
最基础的集合类,是List的一个实现类,可以实现数组大小的可变,可以很方便的进行增加和删减数组内元素的操作。1.5倍扩容。copyOf
增删慢,改查快
LinkedList
底层双向链表,双端队列,效率高
线程不安全
prev前一个,next后一个
增删快,改查慢
Vector
线程安全
无参10,2倍扩容
线程安全
Set集合
无序,元素不可重复
HashSet集合
HashSet() 构造出⼀个新的集合, 底层数组默认的初始容量是16(扩容⼀倍),加载因⼦是0.75
LinkedHashSet兼顾了linked的有序性和HashSet的元素唯⼀性,但是性能没有HashSet好。
TreeSet集合
Queue队列
Map集合
双列集合,key-value
HashMap
Map接口的实现
允许null
key不重复
数组 + 链表
非线程安全容器
2倍扩容
containKey判断是否有此key
remove删除
clear清空
isEmpty是否为空
LinkedHashMap
TreeMap
Hashtable
线程安全
iterator 迭代器
用于访问集合的方法,查看集合中存储的元素,迭代(遍历),ListIterator 是 Collection API 中的接口, 它扩展了 Iterator 接口。
Iterator主要有三个方法:
-
hasNext:没有指针下移操作,只是判断是否存在下一个元素
-
next:指针下移,返回该指针所指向的元素
-
remove:删除当前指针所指向的元素,一般和next方法一起用,这时候的作用就是删除next方法返回的元素
-
Iterator只能从前往后遍历,而且每个迭代器只能用一次
-
ListIterator可以从后往前遍历,
listIterator.hasNext()
listIterator.hasPrevious()
排序接口
Java中的排序是由Comparable和Comparator这两个接口来提供的。
Comparable(接口)
可被排序的,代表本身支持排序功能
类的自然排序,compareTo方法(默认从小到大)
可以看做是内部比较器
Comparator比较器(接口)
比较器,它可以作为一个参数传递到Collections.sort和Arrays.sort方法来指定某个类对象的排序方式
可以看做是外部比较器
两者同时存在的情况下,Comparator优先级高
Comparable和Compator
-
Comparable可以称之为内部比较器,而Compator可以称之为外部比较器。
-
Comparable 是一个排序接口,
-
Comparator 是一个比较器接口,
compareTo() 方法
-
该方法用于两个相同数据类型的比较;
-
返回值
-
如果指定的数与参数相等返回 0
-
如果指定的数小于参数返回 -1
-
如果指定的数大于参数返回 1
-
get/set方法
- 成员变量可读可写控制
Collections类
是一个操作集合的算法类,只能操作Collection接口下的集合(Map集合不能使用该类)
sort自然排序
swap交换两元素的位置
reverse反转集合

浙公网安备 33010602011771号