网站首页 > java教程 正文
package unit6;
import java.util.*;
/*
1.数据结构
队列:先进先出,后进后出
栈:后进先出,先进后出
数组:内存连续区域,根据索引查询快,增删慢
链表:元素是游离的,查询慢,双向链表首尾操作极快
二叉树:永远只有一个根节点,每个节点不超过2个子节点的树
二叉查找树:小的左边,大的右边,但是可能树会变得很高,查询性能变差
平衡查找二叉树:让树的高度差不大于1,增删改查都提高了
红黑树:基于红黑规则实现了自平衡的排序二叉树
2.集合数据结构
List:
ArrayList:数组
LinkedList:链表
Set:
HashSet:底层HashMap
TreeSet:底层TreeMap
Map:
HashMap:数组+链表+红黑树(链表长度大于阈值8)
TreeMap:红黑树
*/
public class CollectionTest extends Object {
public static void main(String[] args) {
// (1)ArrayList数组结构
// public class ArrayList<E> extends AbstractList<E>
// implements List<E>, RandomAccess, Cloneable, java.io.Serializable
// List 有序集合接口
// RandomAccess 通过元素序号快速获取元素对象、快速随机访问
// Cloneable 重写clone、能被克隆
// Serializable 序列化接口、对象流化
// ArrayList<Integer> arrayList = new ArrayList();
// this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
// private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
// Object[]数组、初始长度为0
// arrayList.add(1);
// 当添加第一个元素的时候、创建一个长度为10的Object数组
// private static final int DEFAULT_CAPACITY = 10;
// grow扩容的方法、扩容1.5倍
// if (minCapacity - elementData.length > 0) grow(minCapacity); }
// int newCapacity = oldCapacity + (oldCapacity >> 1);
// elementData = Arrays.copyOf(elementData, newCapacity);
// System.out.println(arrayList.get(0));
// int a = 4;
// System.out.println(a << 2); // 右移一位就是除2、左移一位就是乘2
// (2)LinkedList链表结构
// public class LinkedList<E>
// extends AbstractSequentialList<E>
// implements List<E>, Deque<E>, Cloneable, java.io.Serializable
// private static class Node<E> {
// E item;
// LinkedList.Node<E> next;
// LinkedList.Node<E> prev;
//
// Node(LinkedList.Node<E> prev, E element, LinkedList.Node<E> next) {
// this.item = element;
// this.next = next;
// this.prev = prev;
// }
// }
// LinkedList linkedList = new LinkedList();
// linkedList.add(1);
// final LinkedList.Node<E> newNode = new LinkedList.Node<>(l, e, null);
// last = newNode;
// linkedList.remove("");
// 链表遍历方式
// for (LinkedList.Node<E> x = first; x != null; x = x.next) {
// if (o.equals(x.item)) {
// unlink(x);
// return true;
// }
// }
// final LinkedList.Node<E> next = x.next;
// final LinkedList.Node<E> prev = x.prev;
//
// if (prev == null) {
// first = next;
// } else {
// prev.next = next;
// x.prev = null;
// }
// (3)HashMap数组结构 + 链表结构 + 红黑树结构
// HashMap初始化大小是16
// static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
// 之后每次扩容是原来的2倍
// newThr = oldThr << 1;
// 链表阈值超过8则会转换为红黑树
// static final int TREEIFY_THRESHOLD = 8;
// 数组、如果链表长度超过8、先扩容数组、如果数值长度超过64、转换为红黑树
// static final int MIN_TREEIFY_CAPACITY = 64;
HashMap hashMap = new HashMap();
// this.loadFactor = DEFAULT_LOAD_FACTOR;
// 扩容的阈值:0.75 超过3/4才会扩容
// static final float DEFAULT_LOAD_FACTOR = 0.75f;
hashMap.put(1, "张三");
}
}
猜你喜欢
- 2024-09-11 阿里架构师剖析:Redis常用数据类型对应的数据结构
- 2024-09-11 聊聊经典数据结构HashMap,逐行分析每一个关键点
- 2024-09-11 压箱底Redis面试集-48.Redis 的 ListPack 数据结构是什么?
- 2024-09-11 JAVA进阶知识学习-day03 数据结构&List集合&Set集合
- 2024-09-11 Java数据结构面试必问:HashMap 底层实现原理分析
- 2024-09-11 Java路径-31-Java数据结构(我的世界java路径错误怎么办)
- 2024-09-11 《数据结构》第九篇、java中ArrayList源码解析
- 2024-09-11 JDK源码分析--Object(jdk1.8源码详细介绍)
- 2024-09-11 「Java数据结构」Java对象的比较(java对比两个对象属性的变化)
- 2024-09-11 动图+源码,演示Java中常用数据结构执行过程及原理
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)