Java集合框架总结

本BLOG上原创文章未经本人许可,不得用于商业用途。转载请注明出处,否则保留追究法律责任的权利。

变量和数组以及集合的比较

  • 当需要在程序中记录单个数据内容时,声明一个变量即可
  • 当需要在程序中记录多个类型相同的数据内容时,声明一个一维数组即可
  • 当需要在程序中记录多个类型不同的数据内容时,构造一个对象即可
  • 当需要在程序中记录多个类型相同的对象时,声明一个对象数组即可
  • 当需要在程序中记录多个类型不同的对象时,声明一个集合即可

集合(容器)框架

在Java中集合框架的顶层是:java.util.Collection集合 和 java.util.Map集合

其中Collection集合中操作元素的基本单位是:单元素

其中Map集合中操作元素的基本单位是:单元素

在开发中很少直接使用Collection集合,而是使用该集合的子集合:List集合、Queue集合、Set集合等。
在这里插入图片描述

Collection集合

  • 基本概念

    java.util.Collection集合是集合框架的根接口,其它接口是该接口的子接口。

  • 常用方法

    boolean add(Object o) – 向集合中添加对象

    boolean contains(Object o) – 判断是否包含有指定对象

    boolean remove(Object o) – 从集合中删除对象

    void clear() – 清空集合

    int size() – 返回包含对象的个数

    boolean isEmpty() – 判断是否为空

List集合

  • 基本概念

    java.util.List集合是Collection集合的子集合,该集合中元素有先后次序且允许重复

    该集合的只要实现类有:ArrayList类、LinkedList类、Stack类、Vector类等

    其中ArrayList类的底层是采用动态数组进行数据管理,访问方便增删不方便

    其中LinkedList类的底层是采用双向链表进行数据管理,增删方便访问不方便

    其中Stack类的底层是采用数组进行数据管理,主要用于描述具有后进先出特征的数据结构,叫做

    其中Vector类的的底层是采用数组进行数据管理,与ArrayList类相比属于线程安全的类,因此效率比较在开发中推荐使用ArrayList类取代之

  • 常用的方法

    viod add(int index, E element) – 向集合中指定位置添加元素

    boolan addAll(int index, Collection<? extends E> c) – 向集合中添加所有元素

    E get(int index) – 从集合中获取指定位置元素

    E set(int index, E element) – 修改指定位置的元素

    E remove(int index) – 删除指定位置的元素

泛型机制

  • 基本概念

    通常情况下集合中可以存放不同类型的对象,本质上是将这些对象全部看做Object类型放入的,因此从集合中取出来元素时也是Object类型,为了表达元素最真实的数据类型就需要强制转换,而强制转换可能发生类型转换异常。

    为了避免上述错误的发生,从JDK1.5开始提出泛型机制,也就是在集合名称的右侧使用 <数据类型> 的方式明确要求该集合可以存放的元素类型,若放入其它类型则编译报错。如:

    List  list = new LinkedList();	//可以放入任何类型对象,取出麻烦
    List<String>  list = new LinkedList<String>();	//只能放入String类型,取出方便
    
  • 原理分析

    泛型的本质就是参数化类型,也就是让数据类型作为参数传递,集合定义中的E相当于形式参数负责占位,而使用集合时<>中的数据类型相当于实际参数负责给形式参数初始化,当初始化完毕后所有E被替换为实际参数表示的类型进行使用。如:

    public interface List<E> {	//E表示形参
        ...
    }
    List<String> list1 = ...;	//String为实参
    

Queue集合

  • 基本概念

    java.util.Queue集合是Collection集合的子集合,与List集合是平级关系。

    该集合的主要实现类是:LinkedList类,因为该类在增删方面有一定优势。

    该集合用于描述具有先进先出特征的数据结构,叫做队列

Set集合

  • 基本概念

    java.util.Set集合是Collection集合的子集合,与List集合以及Queue集合平级关系

    该集合与List集合的主要区别在于:元素没有先后次序并且不允许重复的元素

    该集合的主要实现类有:HashSet类 和 TreeSet 类

    其中HashSet的底层采用哈希表进行数据管理

    其中TreeSet的底层采用二叉树进行数据管理

  • 常用的方法

    参考Collection集合的方法即可

迭代器

  • 基本概念

    所有Collection的实现类都实现了其iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素的迭代遍历

  • Iterator接口的主要方法

    boolean hasNext() – 判断集合中是否有可迭代/访问的元素

    E next() – 用于取出一个元素并指向下一个元素

    void remove() – 用于删除访问到的最后一个元素

  • 注意

    当使用迭代器迭代集合中的所有元素时,若使用集合中的remove方法来删除元素,则会出现ConcurrentModificationException并发修改异常,在开发中应该使用迭代器的remove方法来删除元素。

增强版for循环(for each结构)

  • 语法格式

    for(元素类型 变量名:数组名/集合名) {
    	循环体;
    }
    
  • 执行流程

    不断地从数组或集合中取出一个元素并赋值给变量并执行循环体,直到所有的元素处理完毕为止。

Map集合

  • 基本概念

    java.util.Map<K,V>集合中操作元素的基本单位是:单对元素,其中类型参数如下:

    K - 此映射所维护的键(key)的类型

    V - 映射值(value)的

    该集合中不允许出现重复的键,每个键最多只能映射到一个值。

    该集合的主要实现类有:HashMap 和 TreeMap类

    其中HashMap 的底层采用哈希表进行数据管理

    其中TreeMap的底层采用二叉树进行数据管理

  • 常用的方法

    V put(K key, V value) – 将Key-Value对存入Map,若集合中已经包含该Key,则替换该Key所对应的 Value,返回值为原来多对应的Value,若没有则返回null

    V get(Object key) – 返回与参数Key所对应的value对象,如果不存在则返回null

集合的遍历方式总结

遍历Set集合的方式有三种:toString()、for each结构、迭代器

遍历List集合的方式有四种:除了上述3种方式外,还有get方法

遍历Map集合的方式有三种:toString()、entrySet()、keySet()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值