Collection 集合(单列集合)(根接口)

List集合实现类:

ArrayList         LinkedList         Vector         CopyonWriteArrayList

Set集合实现类:

HashSet——>LinkedHashSet         TreeSet

Collection常用方法:

add(Object e)                  往集合里放入元素

addAll(Collection c)         往集合里放入集合

remove(Object e)            从集合中移除一个元素

removeAll(Collection c)   从集合中移除多个元素(与移除集合重复的元素正常移除,其他不用管)

clear()                              清空集合

contains(Object e)           判断集合中包不包含某一元素

containsAll(Object e)       判断集合中包不包含多个元素(所有都包含才为true)

isEmpty()                         判断集合是否为空

size()                                取集合的大小

toArrayLiat()                     把集合转化为数组

iterator                              获取迭代器对象(  Iterator it=集合.iterator(); )

List集合

特点:存放的元素是有序的,可以重复

实现类:

ArrayList:底层使用数组,查询快,添加删除慢,线程不安全。

LinkedList:底层使用链表,查询慢,添加删除快,线程不安全。

Vector:在jdk1.2就出现了,比较古老,底层是数组,线程是安全的。

CopyonwriteArrayList:即兼顾了线程安全,又提高了并发性,性能比Vector高,底层使用数组

数组使用线性结构,链表使用链式结构

容量问题

当  总元素个数>原容量*加载因子 就会扩容

ArrayList:

jdk1.6之前,创建时默认容量为10个大小
jdk1.7之后,创建时默认容量为0,当添加第一个元素时,容量变成10

LinkedList:

链表,无初始化大小,无扩容机制

Vector:

底层是数组,线程安全,默认大小为10,扩容为原来1倍

CopyonwriteArrayList:

复制数组,对新数组进行写操作,写完将原容器引用指向新数组

List新增方法

add(int a, Object o)  往某个位置上添一个元素
addAll(int a, Collection c) 往某个位置上添一组元素
get(int a)  根据索引取元素
indexOf(Object o) 查询一个元素在集合中的索引
set(int a, Object 0)  把集合中某个位置上的元素,换成指定的值 ,返回值是指被换出来的那个元素
remove(int a) 移除指定位置上的元素
subList(int a, int b )  取集合中的一段,和substring很象
iterator() 用来迭代集合 继承Collection得到的
listIterator()  用来迭代集合 list集合特有的
listIterator(n)  用来迭代集合 可以指定索引

listIterator()和iterator()区别:


1:listIterator可以双向遍历,iterator()只能单向
2:listIterator可以定位索引,iterator()不能
3:listIterator可以添加修改数据,iterator()不能,只能删除

添加对象

在List集合中,判断两个对象是否相同,根据对象自己的equals方法,返回为true则相同

附加

Enumeration和Iterator迭代器用法和作用一样的,它只是Vector特有的遍历方式

Stack是栈结构,先进后出。

Set集合

特点:存放的元素是无序的,不可以重复

实现类:

HashSet:无序的,效率高,线程不安全(底层HashMap,HashMap底层用的是 哈希表+红黑树)

TreeSet:可以对元素进行自动排序,线程不安全(底层TreeMap,TreeMap底层用的是 红黑树)

LinkedHashSet:具有先进先出的特点,插入顺序和取出顺序一致,因为链表结构导致(底层LinkedHashMap,LinkedHashMap底层使用的是 双向链表+红黑树+哈希表)

附加:

哈希表默认大小为16,加载因子0.75,扩容1倍

用法:

可以与List互相转换

对象相等判断

List集合进行对象相等判断时,利用的是对象本身的equals方法

HashSet进行对象相等判断时,它首先会判断对象的hashCode方法结果是不是相同,如果相同,再去判断equals方法结果是否为true,如果为true,则任何对象此时相同,所以就会去重

TreeSet 进行对象相等判断时,会调用compareTo 方法,如果为0,就相等

附加:hashCode来自于Object,用于计算对象的hash值(散列值),是一个数字,根据对象的内存以及字段计算得到的,目的是为了配合哈希表使用的(散列表)

Comparable比较器

自定义一个类实现一个接口Comparator

Comparable和Comparator的区别:
一个类实现了 Comparable 接口,则表明这个类的对象之间就具备比较规则,叫做内比较器。而Comparator是一种算法的实现,可以将数据和算法进行分离,叫做外比较器

集合与数组的区别:
1:数组声明的时候需要声明类型,而集合不需要
2:数组一旦创建大小不能改变,而集合不需要

3:数组能装基本数据类型,而集合不行(只能装对应的包装类型)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值