首页 > 编程语言 >JAVA的数据结构

JAVA的数据结构

时间:2024-08-20 14:51:08浏览次数:9  
标签:JAVA 元素 PriorityQueue 插入 二叉树 new 数据结构 节点

JAVA数据结构

一、数组(Arrays)

可以存储固定大小相同类型的元素。
int[] array = new int[5];

  • 优点:随机访问元素效率高
  • 缺点:大小固定,插入和删除元素相对较慢

二、列表(Lists)

1、ArrayList
List<String> arrayList = new ArrayList<>();

  • 特点:动态数组,可变大小
  • 优点:高效的随机访问和快速尾部插入
  • 缺点:中间插入和删除相对较慢

2、LinkedList
List<Integer> linkedList = new LinkedList<>();

  • 特点:双向链表,元素之间通过指针连接。
  • 优点:插入和删除元素高效,迭代器性能好
  • 缺点:随机访问相对较慢

三、集合(Sets)

用于存储不重复的元素,常见的实现有HashSet和TreeSet
1、HashSet
Set<String> hashSet = new HashSet<>();

  • 特点:无序集合,基于HashMap实现
  • 优点:高效的查找和插入操作
  • 缺点:不保证顺序

2、TreeSet
Set<Integer> treeSet = new TreeSet<>();

  • 特点:有序集合,底层基于红黑树实现,不允许重复元素
  • 优点:提供自动排序功能,适用于需要按顺序存储元素的场景
  • 缺点:性能相对较差,不允许插入Null元素

四、映射(Maps)

用于存储键值对,常见的实现有HashMap和TreeMap
1、HashMap
Map<String, Integer> hashMap = new HashMap<>();

  • 特点:基于哈希表实现的键值对存储结构
  • 优点:高效的查找、插入和删除操作
  • 缺点:无序,不保证顺序

2、TreeMap
Map<String, Integer> treeMap = new TreeMap<>();

  • 特点:基于红黑树实现的有序键值对存储结构
  • 优点:有序,支持按照键的顺序遍历
  • 缺点:插入和删除相对较慢

五、栈(Stack)

栈(Stack)是一种线性数据结构,它按照后进先出(Last In, First Out,LIFO)的原则管理元素。在栈中,新元素被添加到栈的顶部,而只能从栈的顶部移除元素。这就意味着最后添加的元素是第一个被移除的。
Stack<Integer> stack = new Stack<>();

  • Stack类代表一个栈,通常按照后进先出(LIFO)的顺序操作元素。

六、队列(Queue)

1、先进先出(FIFO)原则,常见的实现有LinkedList和PriorityQueue
Queue<String> queue = new LinkedList<>();
2、Queue接口:代表一个队列,先进先出原则,实现类LinkedList, PriorityQueue, ArrayDeque

七、堆(Heap)

堆(Heap)优先队列的基础,可以实现最大堆和最小堆

PriorityQueue<Integer> minHeap = new PriorityQueue<>();
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());

八、树(Tree)

树是一种线性结构,由节点组成的集合
1、二叉树:每一个节点最多有两个子树
2、完全二叉树:除了最外层节点,其他的节点都达到最大的层数

  • 判断是否是完全二叉树:叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树

3、满二叉树:一个树的节点要么是叶子节点,要么就是有两个节点
4、平衡二叉树:任何节点的子树高度差不超过1
5、二叉查找树:任意节点的左子树都不能为空,并且左子树所有节点的值都小于根节点;任意节点的右子树不能为空,并且右子树所有节点的值都大于根节点;任意节点的左右子树都是一个二叉查找树。

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}

九、图(Graphs)

图的表示通常需要自定义数据结构或使用图库,Java 没有内建的图类。

标签:JAVA,元素,PriorityQueue,插入,二叉树,new,数据结构,节点
From: https://www.cnblogs.com/shihongpin/p/18362635

相关文章

  • JAVA工厂模式
    概要工厂模式提供了一种创建对象的方法,而无需指定要创建的具体类通过使用工厂模式,可以将对象的创建逻辑封装在一个工厂类中,而不是在客户端代码中直接实例化对象,这样可以提高代码的可维护性和可扩展性。类型简单工厂模式:简单工厂模式不是一个正式的设计模式,但它是工厂模式的......
  • JAVA集合框架
    JAVA集合框架java集合框架位于java.util包中,所以当使用集合框架的时候需要进行导包一、集合框架设计目标该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。对一个集合的扩展和适应......
  • [Javascript] HTML Template Interpolation
    Thebasic interpolatefunctionwecancreate:functioninterpolate(str,params){letnames=Object.keys(params);//["title","description"]letvalues=Object.values(params);//["Hello","World"]......
  • Java中处理SocketException: Connection reset”异常的方法
    Java中处理SocketException:Connectionreset”异常的方法在Java编程中,有时候我们会遇到java.net.SocketException:Connectionreset异常。这个异常通常表示网络连接被重置或关闭,导致无法继续进行数据传输。在处理这个异常时,有几种常用的方法可以尝试。方法一:检查网络连接首......
  • 【NOI】C++数据结构入门之一维数组(二)数组找数
    文章目录前言一、概念1.导入2.数组找数二、例题讲解问题类型——查找特定值问题:1154.数组元素的查找问题:1815.最后一次出现该数的位置问题类型——查找最值问题:1152.求n个数的最大值和最小值问题:1168.歌唱比赛评分问题类型——统计出现次数问题:1810.最贵商品和最......
  • Java计算机毕业设计移动购物管家app(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着移动互联网技术的飞速发展,智能手机已成为人们日常生活中不可或缺的一部分,极大地改变了人们的消费习惯。传统购物模式逐渐向线上转移,移动购物以其......
  • Java实现冒泡排序和插入排序算法
    冒泡排序算法步骤1、比较相邻的元素,如果第一个比第二个大,就交换它们两个;2、对每一对相邻元素作同样的比价,从开始第一对到结尾的最后一对,这样在最后的元素就是最大的数;3、针对所有的元素重复以上的步骤,除了数组最后已经排好序的数组;4、重复步骤1~3,直到排序完成。代码实现pac......
  • 【Java】 方法引用与Lambda(快速上手)
    Java系列文章目录补充内容Windows通过SSH连接Linux第一章Linux基本命令的学习与Linux历史文章目录Java系列文章目录一、前言二、学习内容:三、问题描述四、解决方案:4.1方法引用五、总结:一、前言Calculator::plus看到::好奇有什么用二、学习内容:方法引用......
  • 数据结构之 红黑树入门教程、红黑树代码示例
    红黑树(Red-BlackTree)是一种自平衡的二叉查找树(BST),它在插入、删除和查找操作后通过一些特定的规则来维护树的平衡,从而确保这些操作的时间复杂度始终为O(logn)。红黑树主要应用在需要高效动态集合操作的场景中,如操作系统中的进程调度器、数据库中的索引等。红黑树的基本性......
  • 数据结构详细教程绪论
    ......