javaSE之集合框架(2)集合常用实现类学习指南,包括ArrayList,LinkedList,HashMap,HashSet等常用集合,以及工具类Collections,Iterator等等

集合常用实现类

1. Collections

1.1 概念

  • 是什么

是个java.util下的类,是针对集合类的一个工具类,提供一系列静态方法,实现对集合的查找、排序、替换、线程安全化(将非同步的集合转换成同步的)等操作。

2.2 常用方法

  • sort(Collection,[Comparator]): 对集合进行排序。

  • reverse(List list): 反转集合中的元素。

  • shuffle(Collection): 对集合进行随机排序。

  • fill(List list, Object o): 用对象o替换集合list中的所有元素。

  • copy(List m, List n): 将集合n中的元素全部复制到m中,并且覆盖相应索引的元素。

  • min(Collection, [Comparator]) && max((Collection, [Comparator]) )

  • indexOfSubList(List list, List subList): 查找子串subList在list中首次出现位置的索引。

  • lastIndexOfSubList(List source,List target): 与上相反。

  • rotate(List list, int m): 集合整体向后移m个位置。

  • swap(List list, int i, int j): 交换指定索引处的集合元素

2. ArrayList

2.1 概念

  • 是什么

    ArrayList类是一个可以动态修改的数组,与普通数组的区别就是它没有固定的大小的限制,实现了List接口。

    import java.util.ArrayList
    ArrayList<E> objectName = new ArrayList<>();
    

2.2 常用方法

  • 添加元素: add(E e)

  • 访问元素: get(index)

  • 修改元素: set(index, E e)

    修改index位置处,的值为e

  • 删除元素: remove(index)

  • 计算大小: size()

Java ArrayList 常用方法列表如下:

方法 描述
add() 将元素插入到指定位置的 arraylist 中
addAll() 添加集合中的所有元素到 arraylist 中
clear() 删除 arraylist 中的所有元素
clone() 复制一份 arraylist
contains() 判断元素是否在 arraylist
get() 通过索引值获取 arraylist 中的元素
indexOf() 返回 arraylist 中元素的索引值
removeAll() 删除存在于指定集合中的 arraylist 里的所有元素
remove() 删除 arraylist 里的单个元素
size() 返回 arraylist 里元素数量
isEmpty() 判断 arraylist 是否为空
subList() 截取部分 arraylist 的元素
set() 替换 arraylist 中指定索引的元素
sort() 对 arraylist 元素进行排序
toArray() 将 arraylist 转换为数组
toString() 将 arraylist 转换为字符串
ensureCapacity() 设置指定容量大小的 arraylist
lastIndexOf() 返回指定元素在 arraylist 中最后一次出现的位置
retainAll() 保留 arraylist 中在指定集合中也存在的那些元素
containsAll() 查看 arraylist 是否包含指定集合中的所有元素
trimToSize() 将 arraylist 中的容量调整为数组中的元素个数
removeRange() 删除 arraylist 中指定索引之间存在的元素
replaceAll() 将给定的操作内容替换掉数组中每一个元素
removeIf() 删除所有满足特定条件的 arraylist 元素
forEach() 遍历 arraylist 中每一个元素并执行特定操作

3. LinkedList

3.1 概念

  • 是什么

    LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用.

    LinkedList 的底层结构是一个带头、尾指针的双向链表,可以快速的对头/尾节点 进行操作

3.2 常用方法

  • 添加

    add(Object o)、add(int index, Object o)、addFirst(Object o)、addLast(Object o)

  • 删除

    remove()、remove(int index, Object o)、removeFirst(Object o)、removeLast(Object o)、clear(): 清空

  • 修改

    set(int index, E element)

  • 查询

    indexOf(Object o)

    常用方法

    方法 描述
    public boolean add(E e) 链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
    public void add(int index, E element) 向指定位置插入元素。
    public boolean addAll(Collection c) 将一个集合的所有元素添加到链表后面,返回是否成功,成功为 true,失败为 false。
    public boolean addAll(int index, Collection c) 将一个集合的所有元素添加到链表的指定位置后面,返回是否成功,成功为 true,失败为 false。
    public void addFirst(E e) 元素添加到头部。
    public void addLast(E e) 元素添加到尾部。
    public boolean offer(E e) 向链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
    public boolean offerFirst(E e) 头部插入元素,返回是否成功,成功为 true,失败为 false。
    public boolean offerLast(E e) 尾部插入元素,返回是否成功,成功为 true,失败为 false。
    public void clear() 清空链表。
    public E removeFirst() 删除并返回第一个元素。
    public E removeLast() 删除并返回最后一个元素。
    public boolean remove(Object o) 删除某一元素,返回是否成功,成功为 true,失败为 false。
    public E remove(int index) 删除指定位置的元素。
    public E poll() 删除并返回第一个元素。
    public E remove() 删除并返回第一个元素。
    public boolean contains(Object o) 判断是否含有某一元素。
    public E get(int index) 返回指定位置的元素。
    public E getFirst() 返回第一个元素。
    public E getLast() 返回最后一个元素。
    public int indexOf(Object o) 查找指定元素从前往后第一次出现的索引。
    public int lastIndexOf(Object o) 查找指定元素最后一次出现的索引。
    public E peek() 返回第一个元素。
    public E element() 返回第一个元素。
    public E peekFirst() 返回头部元素。
    public E peekLast() 返回尾部元素。
    public E set(int index, E element) 设置指定位置的元素。
    public Object clone() 克隆该列表。
    public Iterator descendingIterator() 返回倒序迭代器。
    public int size() 返回链表元素个数。
    public ListIterator listIterator(int index) 返回从指定位置开始到末尾的迭代器。
    public Object[] toArray() 返回一个由链表元素组成的数组。
    public T[] toArray(T[] a) 返回一个由链表元素转换类型而成的数组。

    更多 API 方法可以查看:https://www.runoob.com/manual/jdk11api/java.base/java/util/LinkedList.html

4. HashMap

4.1 概念

  • 是什么
    1. HashMap底层逻辑是一个散列表,可以看成由数组和链表组成
    2. 存储键值对映射
    3. 无序,不记录插入顺序
    4. 实现Map接口

4.2 常用方法

  • 添加

    • put()

       // 创建 HashMap 对象 map
              HashMap<Integer, String> map = new HashMap<Integer, String>();
              // 添加键值对
              map.put(1, "Google");
      		map.put(2,"Firefox")
       //结果: {1=Google, 2=Firefox}
      
  • 删除

    • remove(key): 删除对应的key-value
    • clear(): 清空所有
  • 修改

  • 查询

    • get(key)

        System.out.println(map.get(1));
      //结果: Google
      
  • 其他

    • size()
    • keySet()
    • values()
方法 描述
clear() 删除 hashMap 中的所有键/值对
clone() 复制一份 hashMap
isEmpty() 判断 hashMap 是否为空
size() 计算 hashMap 中键/值对的数量
put() 将键/值对添加到 hashMap 中
putAll() 将所有键/值对添加到 hashMap 中
putIfAbsent() 如果 hashMap 中不存在指定的键,则将指定的键/值对插入到 hashMap 中。
remove() 删除 hashMap 中指定键 key 的映射关系
containsKey() 检查 hashMap 中是否存在指定的 key 对应的映射关系。
containsValue() 检查 hashMap 中是否存在指定的 value 对应的映射关系。
replace() 替换 hashMap 中是指定的 key 对应的 value。
replaceAll() 将 hashMap 中的所有映射关系替换成给定的函数所执行的结果。
get() 获取指定 key 对应对 value
getOrDefault() 获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值
forEach() 对 hashMap 中的每个映射执行指定的操作。
entrySet() 返回 hashMap 中所有映射项的集合集合视图。
keySet() 返回 hashMap 中所有 key 组成的集合视图。
values() 返回 hashMap 中存在的所有 value 值。
merge() 添加键值对到 hashMap 中
compute() 对 hashMap 中指定 key 的值进行重新计算
computeIfAbsent() 对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 hasMap 中
computeIfPresent() 对 hashMap 中指定 key 的值进行重新计算,前提是该 key 存在于 hashMap 中。

更多 API 方法可以查看:https://www.runoob.com/manual/jdk11api/java.base/java/util/HashMap.html

5. LinkedHashSet

5.1 概念

5.2 常用方法

6. HashSet

6.1 概念

  • 是什么
    1. HashSet类,是存在于java.util包中的类 [1] 。同时也被称为集合,该容器中只能存储不重复的对象。
    2. 基于HashMap的,无序
    3. 可以有null,线程不安全,实现了set接口

6.2 常用方法

  • 添加

    • add()

    • contains()

        HashSet<String> set = new HashSet<String>();
              set.add("Google");
              set.add("Runoob");
              set.add("Taobao");
      		set.add("Runoob")
              System.out.println(sites);
      		System.out.println(set.contains(Taobao));
       //结果: [Google,Taobao,Runoob]
       //       true
      
  • 删除

    • remove():

      set.remove("Taobao")
      
  • 修改

  • 查询

  • 其他

7.LinkedHashMap

7.1 概念

7.2 常用方法

8. Iterator 迭代器

8.1 概念

  • 一种访问集合的方法,多用于访问ArrayList和HashSet

8.2 使用

  ArrayList<Integer> numbers = new ArrayList<Integer>();
        numbers.add(12);
        numbers.add(8);
        numbers.add(2);
        numbers.add(23);
//      获取迭代器
        Iterator<Integer> it = numbers.iterator();
//		检测集合中是否还有元素
        while(it.hasNext()) {
    
    
            //返回迭代器中下一个元素
            Integer i = it.next();
            if(i < 10) {
    
      
                it.remove();  // 删除小于 10 的元素
            }
        }
        System.out.println(numbers);
// 结果: [12, 23]

猜你喜欢

转载自blog.csdn.net/qq_37795916/article/details/114687266