Connection 中的List和Set

集合是一种可以存储对象的容器,当然这个容器也是一个对象。和数组相比,集合的优势在于它的长度是可以变化,另外集合

可以存储多个类型的对象,而数组的长度是固定的,只能存储一个类型的元素;但是集合不能存储基本数据类型,而数组却可以。

--------------------------------Collection是Collection系列的根接口

规定了Collection系列的公共的/必须的一些方法和特征。

1、元素可以重复

2、元素是没有顺序的

boolean add(E e)

boolean addAll(Collection<? extends E> c)

void clear()

boolean isEmpty()

Iterator<E> iterator()

获取该集合的迭代器。我们可以通过迭代器获取这个集合中的所有元素。

boolean hasNext()

Object next()

void remove()

指向的是元素的中间,并不是只想元素本身

int size()

Object[] toArray()   -->将集合变为数组

boolean contains(Object o) 

返回集合中是否存在对象o,必须要重写equal()方法

boolean remove(Object o)

移除集合中的对象o,必须要重写equal()方法


--------------------------List   有序的Collection

是有序的Collection,即有下标,所以在Collection的基础上添加了关于下标的方法

void add(int index,E element)

E get(int index)

E remove(int index)

E set(int index, E element)

修改指定的元素

List<E> subList(int formIndex, int toIndex)  

获取子集合

int indexOf(Object o)

获取第一个为o元素的下标

int lastIndexOf(Object o)

获取最后一个为o元素的下标

1、ArrayList 

底层是数组结构,元素有顺序,线程不同步。

查找快,增删慢。容量扩展的规律是50%+1

ArrayList可以存储不规则的元素和相同的元素。

2、LinkedList

底层是链表结构,线程不同步。

查找慢,增删快。增长方式不同于其他。

ArrayList可以的操作,LinkedList都可以。

3、Vector

Vector中所有的方法都是同步的(synchronized)。操作效率低于ArrayList。

Vector的扩展规律为100%+1。

*************************************************************************************************
ArrayList、Vector和LinkedList有何区别
ArrayList底层是数组,增删慢,查找快
是线程不安全的,效率高
LinkedList底层是链表,增删快,查找慢
线程不安全,效率高
Vector底层是数组,增删慢,查找快

线程安全,效率低

*************************************************************************************************


--------------------------Set  无序不可重复的Collection

此方法必须重写equals()和hashCode()

判断元素是否相同的条件是:hashCode()  &&  equals()

boolean containsAll(Connection<?> c)

boolean equals(Object o)

int hashCode()

为什么先比较hashCode?  因为hashCode是数字,比较较快。

1、HashSet  

需要重写hashcode和equals方法,其他和LinkedList一样,没有顺序,没有索引,不能有for方法,但可以用foreach()

2、LinkedHashSet
底层有链表和hashMap组成,链表保证了有序(存储顺序),HaseMap保证了不重复
LinkedHashSet是一个有序不重复的集合
3、TreeSet  有顺序的,不重复Set
TreeSet中的元素需要实现Comparable接口。因为TreeSet元素的大小顺序时时按照CoparaTo方法返回的结果判断的。
使用元素的自然顺序对元素进行排序,或者根据set时提供的Comparator进行排序,具体取决于使用的构造方法。
3.1、自然排序/Comparable接口排序         实现接口
3.2、比较器排序/Comparator排序            构造器里面  匿名内部类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值