Java中常用集合简述

集合学习体系结构图

在这里插入图片描述

Collection常用方法

boolean add(E e) 添加元素
boolean remove(Object o) 从集合中移除指定的元素
void clear() 清空集合中的元素
boolean contains(Object o) 判断集合中是否存在指定的元素
boolean isEmpty() 判断集合是否为空
int size() 集合的长度,也就是集合中元素的个数

Collection集合遍历方式

  1. 迭代器遍历
  2. 增强for循环
  3. 普通for循环

List集合特有方法

  1. 首先声明,List集合是基于Collection集合构建的,所以Collection中的方法List中也有。
  2. 特有方法
    void add(int index,E element) 在此集合中的指定位置插入指定的元素
    E remove(int index) 删除指定索引处的元素,返回被删除的元素
    E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
    E get(int index) 返回指定索引处的元素

并发修改异常(就是在List集合使用迭代器遍历过程中,对集合进行了操作)

ConcurrentModificationException

  1. 当出现该问题时,可以使用列表迭代器ListIterator
  2. 可调用该列表迭代器中的add,set等方法

LinkedList集合的特有功能

public void addFirst(E e) 在该列表开头插入指定的元素
public void addLast(E e) 将指定的元素追加到此列表的末尾
public E getFirst() 返回此列表中的第一个元素
public E getLast() 返回此列表中的最后一个元素
public E removeFirst() 从此列表中删除并返回第一个元素
public E removeLast() 从此列表中删除并返回最后一个元素

Set集合特点

  1. 元素存取无序
  2. 没有索引
  3. 循环遍历只能通过迭代器或增强for
  4. 不能存取重复的元素

哈希值

  1. 什么是哈希值?哈希值是JDK根据对象的地址或者字符串数字算出来的int类型数值
  2. 如何获取哈希值?Object中hashCode()

HashSet集合特点

  1. 底层数据结构是哈希表
  2. 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
  3. 没有带索引的方法,所以不能使用普通for循环遍历
  4. 由于是Set集合,所以是不包含重复元素的集合

HashSet集合保证元素唯一性源码分析

  1. 根据对象的哈希值计算存储位置
    如果当前位置没有元素则直接存入
    如果当前位置有元素存在,则进入第二步
  2. 当前元素的元素和已经存在的元素比较哈希值
    如果哈希值不同,则将当前元素进行存储
    如果哈希值相同,则进入第三步
  3. 通过equals()方法比较两个元素的内容
    如果内容不相同,则将当前元素进行存储
    如果内容相同,则不存储当前元素

LikedHashSet集合

  1. 由哈希表和链表实现的Set接口
  2. 链表保证元素有序、哈希表保证元素唯一

TreeSet

  1. 对于TreeSet而言具有两种构造方法
    TreeSet():根据元素的自然排序进行排序
    TreeSet(Comparator comparator):根据指定的比较器进行排序
  2. 除了构造方法中采用匿名内部类的方式指定比较规则,还可以将目标类实现Comparable<>,重写CompareTo()方法

泛型

  1. 是JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型

  2. 泛型类:修饰符 class 类名<类型> { }

  3. 泛型方法:修饰符<类型> 返回值类型 方法名(类型 变量名){ }

  4. 泛型接口:修饰符 interface 接口名<类型> { }

  5. 类型通配符
    类型通配符:<?>
    List<?>:表示元素类型未知的List,它的元素可以匹配任何的类型
    这种带通配符的List仅表示 它是各种泛型List的父类,并不能把元素添加到其中

    类型通配符上限:<? extends 类型>
    List<? extends Number>:它表示的类型是Number或者其子类型

    类型通配符下限:<? super Number>:它表示的类型是Number或者其父类型

Map集合概述和特点

  1. interface Map<K, V> K:键的类型;V:值的类型
  2. 特点:键值对映射关系
    一个键对应一个值
    键不能重复,值可以重复
    元素存取无序
  3. 方法介绍
方法名说明
V put(K key,V value)添加元素
V remove(Object key)根据键删除键值对元素
void clear()移除所有的键值对元素
boolean containsKey(Object key)判断集合是否包含指定的键
boolean containsValue(Object value)判断集合是否包含指定的值
boolean isEmpty()判断集合是否为空
int size()集合的长度,也就是集合中键值对的个数
  1. Map集合的获取功能
方法名说明
V get(Object key)根据键获取值
Set keySet()获取所有键的集合
Collection values()获取所有值的集合
Set<Map.Entry<K,V>> entrySet()获取所有键值对对象的集合
  1. Map集合的遍历(方式1)
    步骤分析:
    获取所有键的集合。用keySet()方法实现
    遍历键的集合,获取到每一个键。用增强for实现
    根据键去找值。用get(Object key)方法实现
  2. Map集合的遍历(方式2)
    步骤分析:
    获取所有键值对对象的集合
    Set<Map.Entry<K,V>> entrySet():获取所有键值对对象的集合
    遍历键值对对象的集合,得到每一个键值对对象
    用增强for实现,得到每一个Map.Entry
    根据键值对对象获取键和值
    用getKey()得到键
    用getValue()得到值

Collections集合工具类

  1. Collections常用方法
方法名说明
public static void sort(List list)将指定的列表按升序排序
public static void reverse(List<?> list)反转指定列表中元素的顺序
public static void shuffle(List<?> list)使用默认的随机源随机排列指定的列表
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值