了解集合
一、List
1、List 接口
1.java中数组用来进行存储数据是有限制的,我们在java怎么进行让存储数据没对应的局限性性,那么就可以进行使用集合了

2、实现类ArrayList
在本职上ArrayList是对象引用的一个可变的一个数组
说白了,底层就是一个数组
源码:
public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素

3、array 和 arraylist 之间的区别
1.array可以进行包含基本数据类型和对象类型
,arraylist 只能进行包含对象类型
2.array大小有对应的固定,arraylist是动态的

                  3.arraylist提供了更多的方法和特性

图片说明

4、LinkedList 集合
1、 List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)
2。List集合类中元素有序的,并且可进行重复,集合中的每一个元素都有对应的顺序索引 如:0,1,2,3,4....

    3.List 集合(容器) 中的元素都有对应的一个整数类型的序号记载在容器中的位置
    可以根据这个序号在容器中取出对应的元素数据信息

图片说明
5、迭代器
遍历数据的
注意: ListIterator 与 Iterator 之前的区别
1.ListIterator与Iterator 都有hasNext() next() .这两个方法可进行实现顺序向后遍历
2.ListIterator 中的hasPrevious() 与 previous() 可以进行实现逆向遍历数据信息,但是Iterator 不可以的
3.ListIterator 可以进行add添加数据,Iterator 不可以的

4.list接口常用的实现类有Arraylist Linkedlist Vectory

二、Set
1、Set接口
1.不允许包含相同的元素的,
2.Set集合进行判断两个对象是否相同,不是使用 == 运算符的,
而是根据equals 方法来的
3.存取是无序的,不可重复
一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素

 HashSet
 LinkedHashSet
 TreeSet

2、HashSet
HashSet 是按照hash 算法来进行存储集合中的元素的,并且有很好的存取和查找的性能
能保证元素的唯一性, 为什么可以进行保证,是因为依赖于 hashCode 和 equals 方法

注意,在使用iterator() set 集合不能使用Listiterator
HashSet特点:
1.不能保证元素的排列顺序
2.HashSet不是线程安全的
3.元素可以是null
图片说明
3、LinkedHashSet
保证元素唯一,不能重复
注意:
hashSet 它不保证 set 的迭代顺序

  LinkedHashSet   将元素插入到 set 中的顺序(插入顺序)进行迭代。注意,插入顺序不 受在 set 中重新插入的 元素的影响
       插入是什么样的顺序,那么遍历处理就是什么样的顺序
  指定义排序就是进行编写compare的逻辑代码

图片说明

4、TreeSet
唯一
不能存入null

    可以进行对数据的排序
        默认的是。自然顺序对元素进行排序   升序
                    使用就是compareTo(T o)比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

       或者
       根据创建 set 时提供的 Comparator 进行排序,  来进行自定义排序

  但 TreeSet 实例使用它的 compareTo(或 compare)方法对所有元素进行比较

图片说明