一:Collection接口
集合:集合是java中提供的一种容器,可以用来存储多个数据
Collection即单列集合。统一定义了一套单列集合的接口

- boolean add(E e)
向集合中添加一个元素。集合更改则添加成功返回true,如果该集合不允许重复并且已经包含指定的元素。返回false。部分子类的add方法可能会限制添加到集合中的元素类型,或者不会将NULL添加到集合中。
- void clear()
清空掉集合中的所有元素
- boolean contains(Object o)
如果集合中包含指定元素那么返回true。特别的,如果集合中也包含NULL元素的时候并且要查找的元素也是NULL的时候也返回true。
- boolean isEmpty()
如果集合中没有元素返回true。
- boolean remove(Object o)
删除集合中的指定的元素。如果存在NULL,也删除。
- int size()
返回该集合中元素的个数。如果超过了Integer.MAX_VALUE,那么返回Integer.MAX_VALUE。
- Object[] toArray()
这个方法是集合和数组转化的桥梁。
见名知意,返回包含此集合中所有元素的数组。如果这个集合的迭代器保证元素有序,那么该方法与其迭代器中元素顺序一致。并且该方法返回的数组是拷贝出来的(某些集合底层数组实现,区别这个),可以进行任意的更改。
二:List 接口
List接口Api一览
- 重写了Collection接口的一些列函数。
- 继承了add和addAll两个函数的规则。
- 新增了一些列函数。
List集合的特点
和Set集合最大的不同即:
- 有序
- 允许重复元素、
- 有索引,可以普通的for循环遍历
从Api列表中我们可以看到List接口定义了一个listIterator函数,返回一个ListIterator接口。该接口继承自Iterator接口,并提供了更多的函数。
List常见实现类
- ArrayList:
底层数据结构是数组。线程不安全
- LinkedList:
底层数据结构是双向链表。线程不安全
- Vector:
底层数据结构是数组。线程安全
Set 接口
Set接口Api一览
- 并没有新增自己的函数
- 重写了Collection接口的部分函数
- 继承了add函数和addAll函数
Set集合特点
相比于List集合最大的区别:
- 不包含重复元素。
- 没有索引
这里我们强调一下,有些地方说Set集合是无序的,其实是不严谨的。可以看到jdk注释中是没有指明这一点的,那么List集合的注释中的有序和有些人常说的Set集合是无序的是什么意思呢?
首先要搞清楚、Java中有序和无序的概念:
有序指的是存储顺序与添加顺序相同,并且可以通过下标访问,List就是这样。
无序刚好相反,指的是存储顺序与添加顺序无关,没有下标,当然也不可能通过下标访问,Set就是如此。
这里需要注意的是,有序、无序中的“序”与我们平常所说的“顺序”无关。
而TreeSet是无序,但又是排好序的。即添加顺序与存储顺序无关,但是其中的对象实现了排序。
Set集合常用子类
- HashSet:底层数据结构是哈希表(是一个元素为链表的数组)
- TreeSet:底层数据结构是红黑树(是一个自平衡的二叉树)。保证元素的排序方式
- LinkedHashSet:底层数据结构由哈希表和链表组成。
数组和集合的区别
1.数组的长度是固定的,集合的长度是可变的
2.数组中存储的是一种数据类型的元素,可以存储基本数据类型也可以存储引用数据类型,集合存储的都是对象,而且对象的数据类型可以不一样。再开发当中一般当对象较多的时候,使用集合来存储对象
Ctrl+Enter 发布
发布
取消