集合

  • 集合框架:在常用工具类中,是一整套成体系的工具集。

为什么要使用集合?
主要为了解决程序的数据存储的问题:

  • 容器的长度无法动态增长
  • 实现多元化数据存储的特性
  • 实现各种典型的数据结构(二叉树、散列表)
  • 集合提供了很多便利方法:排序,打乱顺序,增,删,改等。
  • 在这里插入图片描述

分支
在这里插入图片描述
在这里插入图片描述

Collection接口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Collection的遍历
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ForEeach注意事项
在这里插入图片描述
在这里插入图片描述

Set接口

HashSet,LinkedHashSet,TreeSet
在这里插入图片描述
set特点

  • 无顺序存储集合(这里不是指排序)
  • 迭代时顺序可能与插入顺序不同
  • 不能存储重复的元素

HashSet

特点

  1. 不能保证元素的排列顺序,存储顺序可能会与添加顺序不同
  2. 不是线程安全的,若有多个线程并发修改HashSet,必须用代码保证其同步性
  3. 插入的元素值可以为null

示例代码
在这里插入图片描述
在这里插入图片描述
要存入元素,先要判断元素能否存入
具体步骤如下:

  1. 先判断两元素的 hashCode 是否一样,确认元素在 HashSet 中存放的位置
  2. 再用 equals() 判断两元素是否相等
  3. 如果 equals 返回 true,元素不能存入(元素重复了)。
    在这里插入图片描述

LinkedHashSet

继承:HashSet
实现:Set、Cloneable、Serializable
特点

  1. 依据 hashCode 确定元素的存放位置
  2. 链表来维护元素的迭代次序

测试代码

public static void main(String[] args){
	Set set = new LinkedHashSet();
	set.add("A");
	set.add("123");
	set.add("我");
	set.add("*");
	System.out.println( set );
}

测试结果:
在这里插入图片描述

TreeSet

TreeSet 是 SortedSet 接口的实现类
继承:AbstractSet
实现:NavigableSet、Cloneable、Serializable、NavigableSet 继承了 SortedSet
数据容器:NavigableMap
特点

  1. 集合中的元素有排序的
  2. 只能添加同种类型的数据
  3. 集合中不能添加相等的元素
  4. 存放元素时是根据红黑树的算法来找到它们的位置
  5. 不能存入 null 元素
    在这里插入图片描述
    二叉树图解
    在这里插入图片描述
    获取元素(A)
    在这里插入图片描述
    在这里插入图片描述
    获取元素(B)
    在这里插入图片描述
    元素的存入
    在这里插入图片描述

自然排序

  • 什么是自然排序
    由存入元素自身来规定比较大小的方法。
  • 具体实现
    存入的元素需实现可比较接口,并实现 compareTo 方法,存入元素时 TreeSet 会自动调用元素的 compareTo(Object)来比较当前元素与 TreeSet 中其它元素大小关系进行排序,以确认当前元素的存放位置。
    在这里插入图片描述
    在这里插入图片描述

定制排序法(比较器法)

在这里插入图片描述

  • 特点
    单独将比较的规则拿出来,设置到一个比较器中
  • 好处
    比较规则不仅限于在某个类中使用(某个类不局限于某种比较规则)
  • 场景
    如果有很多个自定义类都是使用相同的比较规则,则可以考虑使用定制排序法来做排序
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

set总结

在这里插入图片描述
在这里插入图片描述

List接口

在这里插入图片描述
List 集合特点

  1. 有序,可重复
  2. 可通过索引来访问元素
  3. 索引的顺序是插入时的顺序

ArrayList 对象

ArrayList 简介
在这里插入图片描述
ArrayList 特点
在这里插入图片描述
ArrayList 原理解析
在这里插入图片描述
在这里插入图片描述

Vector 对象

Vector 简介
在这里插入图片描述
在这里插入图片描述

Vector 相比于 ArrayList 的不同

  • 方法上的区别
    在这里插入图片描述
  • 其它的区别
    在这里插入图片描述
    在这里插入图片描述
Stack栈

在这里插入图片描述

ListIterator 接口

接口图
在这里插入图片描述

  • 前一个元素检测
    在这里插入图片描述
    在这里插入图片描述
  • 检测下一个元素
    在这里插入图片描述
  • 修改方法
    在这里插入图片描述

Queue 接口

在这里插入图片描述

  • 添加元素
    在这里插入图片描述
  • 取出元素
    在这里插入图片描述

LinkedList 对象

LinkedList 是一个复合类。具有:链表,双端队列,栈三大特性。
在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

Map 映射

  • 概念
    在这里插入图片描述

  • Map 体系
    在这里插入图片描述

  • 映射关系
    在这里插入图片描述
    在这里插入图片描述

  • 常规操作
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

map的迭代

在这里插入图片描述
在这里插入图片描述

HashMap

  • 概述
    在这里插入图片描述

  • 属性描述
    在这里插入图片描述
    在这里插入图片描述

  • 解析加载因子
    在这里插入图片描述
    在这里插入图片描述

  • 存储原理
    在这里插入图片描述

  • 构造器
    在这里插入图片描述

LinkedHashMap

  • 继承关系
    在这里插入图片描述
    在这里插入图片描述

TreeMap

  • 概述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

HashTable

  • 概述
    在这里插入图片描述
    在这里插入图片描述
  • 与 HashMap 比较
    在这里插入图片描述

Properties 属性类

  • 概述
    在这里插入图片描述
  • 相关方法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Map 总结

在这里插入图片描述

  • 应用场景
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值