java se知识点_JavaSE知识点

本文介绍了Java集合框架中的核心接口与实现类,如HashSet、LinkedList、ArrayList和HashMap等,强调了HashMap在高负载时如何利用红黑树优化。同时,对比了B树、B+树和红黑树,解释了MySQL为何选择B+树作为索引结构,因其非叶子节点不存储数据,利于减少磁盘I/O,提高查询效率。
摘要由CSDN通过智能技术生成

JavaSE知识点

1、集合

set 放入set中的Object对象要重写hashcode和equals方法

LinkedList的底层是双向队列,所以LinkedList可以很方便地在首尾增删元素

操作集合元素的两个工具类: Arrays和Collections

集合中的每个元素都是一个对象

接口名称

作 用

Iterator 接口

集合的输出接口,主要用于遍历输出(即迭代访问)Collection 集合中的元素,Iterator 对象被称之为迭代器。迭代器接口是集合接口的父接口,实现类实现 Collection 时就必须实现 Iterator 接口。

Collection 接口

是 List、Set 和 Queue 的父接口,是存放一组单值的最大接口。所谓的单值是指集合中的每个元素都是一个对象。一般很少直接使用此接口直接操作。

Queue 接口

Queue 是 Java 提供的队列实现,有点类似于 List。

Dueue 接口

是 Queue 的一个子接口,为双向队列。

List 接口

是最常用的接口。是有序集合,允许有相同的元素。使用 List 能够精确地控制每个元素插入的位置,用户能够使用索引(元素在 List 中的位置,类似于数组下标)来访问 List 中的元素,与数组类似。

Set 接口

不能包含重复的元素。

Map 接口

是存放一对值的最大接口,即接口中的每个元素都是一对,以 key➡value 的形式保存。

对于 Set、List、Queue 和 Map 这 4 种集合,Java 最常用的实现类分别是 HashSet、TreeSet、ArrayList、ArrayDueue、LinkedList 和 HashMap、TreeMap 等。

类名称

作用

HashSet

为优化査询速度而设计的 Set。它是基于 HashMap 实现的,HashSet 底层使用 HashMap 来保存所有元素,实现比较简单

TreeSet

实现了 Set 接口,是一个有序的 Set,这样就能从 Set 里面提取一个有序序列

ArrayList

个用数组实现的 List,能进行快速的随机访问,效率高而且实现了可变大小的数组

ArrayDueue

是一个基于数组实现的双端队列,按“先进先出”的方式操作集合元素

LinkedList

对顺序访问进行了优化,但随机访问的速度相对较慢。此外它还有 addFirst()、addLast()、getFirst()、getLast()、removeFirst() 和 removeLast() 等方法,能把它当成栈(Stack)或队列(Queue)来用

HsahMap

按哈希算法来存取键对象

TreeMap

可以对键对象进行排序

2、B树,B+树和红黑树:都是平衡二叉搜索树(红黑树平衡性较差,但是元素增删效率高,查询效率相较于其他AVL较低,综合HashMap考虑)

Q: 你说HashMap时,谈到了红黑树,那说说MySQL索引为什么用B+树呢,b树,红黑树呢?为什么不用

二叉查找树=》二叉平衡树=》B树=》B+树

B+ 树非叶子节点上是不存储数据的,仅存储键值,而 B 树节点中不仅存储键值,也会存储数据。

如果不存储数据,那么就会存储更多的键值,相应的树的阶数(节点的子节点树)就会更大,树就会更矮更胖,如此一来我们查找数据进行磁盘的 IO 次数又会再次减少,数据查询的效率也会更快。

红黑树

红黑树 优势

红黑树能够以O(log2(N))的时间复杂度进行搜索、插入、删除操作。此外,任何不平衡都会在3次旋转之内解决。这一点是AVL所不具备的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值