目的:

      在 Java 中为了方便用户操作各个数据结构,引入了类集的概念,有时候就可以把类集称为 java对数据结构的实现

      类集中最大的几个操作接口:Collection、Map、Iterator,这三个接口是使用的最重点的接口。

      所有的类集操作的接口或类都在 java.util 包中。

    

java集合接口文档传参方式 java集合类接口_ci

Collection接口:

     Collection 接口是在整个 Java 类集中保存单值的最大操作父接口,里面每次操作的时候都只能保存一个对象的数据。

     定义:

          public interface Collection <E> extends Iterable <E>

    方法:

 

java集合接口文档传参方式 java集合类接口_java集合接口文档传参方式_02

       在开发中不会直接使用 Collection 接口。而使用其操作的子接口:List(允许重复)、Set(不允许重复

 

List接口:

     List 是 Collection 的子接口,里面的所有内容都是允许重复的。

     定义:

         public interface List <E> extends Collection <E>

    方法:

 

 

java集合接口文档传参方式 java集合类接口_List_03

常用的实现类有如下几个: · ArrayList(95%,线程不安全)、Vector(4%,线程安全)、LinkedList(1%)

 

ArrayList类:

 

    ArrayList 是 List 接口的子类,此类的定义如下:(使用数组结构)

       public class ArrayList <E> extends AbstractList <E> implements List <E>, RandomAccess,Cloneable, Serializable

   方法:

      add(int index, E element)                                       将指定元素插入到指定位置中

      add()                                                                      将指定元素插入到末尾

      get()                                                                       返回指定位置的元素

      addAll(int index, Collection<? extends E> c)        将指定集合插入到指定位置

      addAll(Collection<? extends E> c)                       将指定集合插入到末尾

      clear()                                                              清除列表中所有的元素

      clone()                                                              返回ArrayList实例的浅表副本,([100, 300, 250, 400])

      contains(Object O)                                                判断列表中是否包含此元素

      ensureCapacity(int minCapacity)                      如果有必要,增加ArrayList实例的容量

      indexof(Object O)                                                  返回指定元素在列表中第一次出现的索引,如没有返回-1

      lastIndexOf(Object o)                                            v返回指定元素在列表中最后一次出现的位置,如没有返回-1

      isEmpty()                                                               判断列表中是否为空

      remove(int index)                                             根据指定下标删除元素

      remove(Object O)                                            根据指定元素删除第一个匹配项

      removeAll(Collection<?> c)                                   删除指定几个的所有元素

      removeIf(Predicate<? super E> filter)                   删除指定条件的元素

      removeRange(int fromIndex, int toIndex)              删除指定范围的元素

      retainAll(Collection<?> c)                                      仅保列表中包含在指定集合中的元素

      set(int index, E element)                                     将指定下标替换为指定元素

      size()                                                               返回列表的元素数

      subList(int fromIndex, int toIndex)                       返回指定范围的视图

      toArray()                                                              返回数组

      toArray(T[ ] a)                                                      返回包含此列表中所有元素的数组(

      trimToSize()                                                         将ArrayList实例的大小调整为当前列表的大小

 

Vector 类:

 

    定义:使用数组结构,增删慢查找快

         public class Vector extends AbstractList implements List, RandomAccess, Cloneable,Serializable

   方法:同ArraList一样,只不过多了关于增量的内容

         Vector(int initialCapacity, int capacityIncrement) 初始长度,以及增量

LinkedList 类

     使用双向链表结构,增删快,查找慢,可以看为栈和队列

  定义:

      public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable,Serializable

  方法:

        基本比前两个相同,它提供了几个特殊方法

                  addFirst(E e)        在列表开头插入元素

                  addLast(E e)        在列表末尾插入元素

                  removeFirst()  删除并返回列表第一个元素

                  removeLast()  删除并返回列表最后一个元素

                  push(E e) 压栈

                  pop() 弹栈

                  getFirst()      获得第一个元素

                  getLast()           获得最后一个元素

Iterator 类

   Iterator 迭代器,获取列表中每个元素

     方法:

                  hasNext()      是否有下一个

                  next()             指针下移

                  remove()  删除元素

ListIterator类

    除上面方法还有

         previous() 指针上移

         set(E e) 将当前指针指向元素替换为指定元素

 

ArrayList<Integer> x = new ArrayList<>();
Iterator<Integer> iterator = x.iterator();
while (iterator.hasNext()){
    int y = iterator.next();
    System.out.println(y);
}

forEach

       增强for循环,用于迭代数组或集合

        语法:

           for(数据类型 变量名:集合或名称){}

 

Set 接口

        不包含重复元素的集合,方法基本上还是与 Collection接口相同

        如果想输出其中元素,则使用iterator方法迭代或者使用toArray方法转成数组

    HashSet子类:

          散列存放的存储方式(哈希表)(内置HashMap)

          无法保证顺序是存储顺序

         方法:没什么特殊的方法

    TreeSet 子类:

           采用有序的二叉树存储(基于TreeMap)

          基本类型可以进行排序

          如果要想对自定义类型(对象)进行排序,则必须在 Person 类中实现 Comparable 接口。

          重写toCompare()方法 放回负数,this小,返回正数,this大

          方法:都也差不多