当前位置 博文首页 > @王某人:集合--Collection接口

    @王某人:集合--Collection接口

    作者:[db:作者] 时间:2021-07-05 18:55

    目的:

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

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

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

    ? ??

    Collection接口:

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

    ? ? ?定义:

    ? ? ? ? ? public interface Collection <E> extends Iterable <E>

    ? ? 方法:

    ?

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

    ?

    List接口:

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

    ? ? ?定义:

    ? ? ? ? ?public interface List <E> extends Collection <E>

    ? ? 方法:

    ?

    ?

    常用的实现类有如下几个: · 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大

    ? ? ? ? ? 方法:都也差不多

    ?

    ?

    ?

    ?

    ?

    ?

    cs
    下一篇:没有了