Loading

集合接口的方法

Collection接口

Collection接口是List、Set和Queue接口的父接口,该接口里定义的方法既可用于操作Set集合,也可用于操作List和Queue集合

Collection接口方法

  1. 添加
    • add(Object obj)
    • addAll(Collection coll)
  2. 获取有效元素的个数
    • int size()
  3. 清空集合
    • void clear()
  4. 是否是空集合
    • boolean isEmpty()
  5. 是否包含某个元素
    • boolean contains(Object obj):调用元素的equals方法来判断是否是同一个对象
    • boolean containsAll(Collection c):调用元素的equals方法比较两个集合的元素
  6. 删除
    • boolean remove(Object obj):通过元素的equals方法判断是否是要删除的那个元素,只会删除找到的第一个元素
    • boolean removeAll(Collection coll):取当前集合的差集
  7. 取两个集合的交集
    • boolean retainAll(Collection c):把交集的结果存在当前集合中,不影响c
  8. 集合是否相等
    • boolean equals(Object obj)
  9. 转换成对象数组
    • Object[] toArray()
  10. 获取集合对象的哈希值
    • hashCode()
  11. 遍历
    • iterator():返回迭代器对象,用于集合遍历

遍历

Iterator接口

  1. 集合对象每次调用iterator()方法都得到一个全新的迭代器对象(默认游标都在集合的第一个元素之前)
  2. 内部方法
    • hasNext():判断是否还有下一个元素
    • next():①指针下移 ②将下移以后集合位置上的元素返回
    • remove():在遍历过程中删除元素
Iterator iterator = arrayList.iterator();
while (iterator.hasNext()){
    System.out.println(iterator.next());
    Object obj = iterator.next();
    if (obj.equals("abc")){
        iterator.remove();
    }
}

foreach

内部调用了iterator迭代器

//for(集合元素的类型 局部变量 : 集合对象)
for (Object arr : arrayList){
    System.out.println(arr);
}

List接口

  1. void add(int index, Object ele):在index位置插入ele元素
  2. boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
  3. Object get(int index):获取指定index位置的元素
  4. int indexOf(Object obj):返回obj在集合中首次出现的位置
  5. int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
  6. Object remove(int index):移除指定index位置的元素,并返回此元素
  7. Object set(int index, Object ele):设置指定index位置的元素为ele
  8. List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合

Set

无序性:不等于随机性。存储的数据在底层数组中并非按照数组索引的顺序添加,而是根据数据的哈希值决定的。

不可重复性:保证添加的元素按照equals()判断时,不能返回true.即:相同的元素只能添加一个。

添加元素的过程:以HashSet为例:

  1. 我们向HashSet中添加元素a,首先调用元素a所在类的hashCode()方法,计算元素a的哈希值,
    此哈希值接着通过某种算法计算出在HashSet底层数组中的存放位置(即为:索引位置),判断

  2. 数组此位置上是否已经有元素:

    如果此位置上没有其他元素,则元素a添加成功。
    如果此位置上有其他元素b(或以链表形式存在的多个元素),则比较元素a与元素b的hash值:

    • 如果hash值不相同,则元素a添加成功。
      如果hash值相同,进而需要调用元素a所在类的equals()方法:
      • equals()返回true,元素a添加失败
        equals()返回false,则元素a添加成功。
  3. 存放在Set容器里的对象,对应的类一定要重写equals()和hashCode(Object obj)方法,以实现对象相等规则

  • 添加、删除、修改操作:
    Object put(Object key,Object value):将指定key-value添加到(或修改)当前map对象中
    void putAll(Map m):将m中的所有key-value对存放到当前map中
    Object remove(Object key):移除指定key的key-value对,并返回value
    void clear():清空当前map中的所有数据
  • 元素查询的操作:
    Object get(Object key):获取指定key对应的value
    boolean containsKey(Object key):是否包含指定的key
    boolean containsValue(Object value):是否包含指定的value
    int size():返回map中key-value对的个数
    boolean isEmpty():判断当前map是否为空
    boolean equals(Object obj):判断当前map和参数对象obj是否相等
  • 元视图操作的方法:
    Set keySet():返回所有key构成的Set集合
    Collection values():返回所有value构成的Collection集合
    Set entrySet():返回所有key-value对构成的Set集合
posted @ 2021-05-29 22:28  北兢王  阅读(120)  评论(0)    收藏  举报