首页 > 编程语言 >java数据结构

java数据结构

时间:2024-10-27 17:41:59浏览次数:1  
标签:java LinkedList 元素 PriorityQueue 插入 new 数据结构

Java 提供了丰富的数据结构来处理和组织数据。

Java 的 java.util 包中提供了许多这些数据结构的实现,可以根据需要选择合适的类。

以下是一些常见的 Java 数据结构:

数组(Array):

数组(Arrays)是一种基本的数据结构,可以存储固定大小的相同类型的元素。

int[] array = new int[5];
  • 特点: 固定大小,存储相同类型的元素。
  • 优点: 随机访问元素效率高。
  • 缺点: 大小固定,插入和删除元素相对较慢。

列表(List):

Java 提供了多种列表实现,如 ArrayList 和 LinkedList。

List<String> arrayList = new ArrayList<>();
List<Integer> linkedList = new LinkedList<>();

ArrayList:

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

LinkedList:

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

集合(Set):

集合(Sets)用于存储不重复的元素,常见的实现有 HashSet 和 TreeSet。

Set<String> hashSet = new HashSet<>();
Set<Integer> treeSet = new TreeSet<>();

HashSet:

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

TreeSet:

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

映射(Map):

射(Maps)用于存储键值对,常见的实现有 HashMap 和 TreeMap。

Map<String, Integer> hashMap = new HashMap<>();
Map<String, Integer> treeMap = new TreeMap<>();

HashMap:

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

TreeMap:

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

栈(Stack):

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

Stack<Integer> stack = new Stack<>();

Stack 类:

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

队列(Queue):

队列(Queue)遵循先进先出(FIFO)原则,常见的实现有 LinkedList 和 PriorityQueue。

Queue<String> queue = new LinkedList<>();

Queue 接口:

  • 特点: 代表一个队列,通常按照先进先出(FIFO)的顺序操作元素。
  • 实现类: LinkedList, PriorityQueue, ArrayDeque。

堆(Heap):

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

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

树(Trees):

Java 提供了 TreeNode 类型,可以用于构建二叉树等数据结构。

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




标签:java,LinkedList,元素,PriorityQueue,插入,new,数据结构
From: https://www.cnblogs.com/zhao-ke-ming/p/18504515

相关文章

  • Java 中使用 Session 对象(以登录、退出功能为例)
    一、创建Session(登录功能)使用session.setAttribute(value,key)保存key属性的值value@RequestMapping("/login")publicStringlogin(Stringusername,Stringpassword,HttpSessionsession){//验证账号密码是否错误if(username!="张三"||password!=......
  • JAVA学习笔记--面向对象_面向对象思想介绍
    面向对象的介绍 1.面向过程:自己的事情自己干,代表语言C语言     洗衣服:每一步自己要亲力亲为->找个盆,放点水,找个搓衣板,搓搓搓2.面向对象:自己的事情别人帮忙去干,代表语言Java语言       洗衣服:自己的事情别人干->全自动洗衣机如果......
  • Java学习路线:Lombok(二)Lombok实用注解1
    目录@Getter和@Setter@Accessors@ToString 前置知识:注解以下是我整理的注解学习线路,按顺序学习完下列知识就可以无痛理解本篇了!Java学习路线:JavaSE——注解-CSDN博客Java学习路线:JavaSE——元注解-CSDN博客Java学习路线:JavaSE——自定义注解-CSDN博客@Getter......
  • JAVA学习笔记--方法篇
    一,形式参数和实际参数区别1.形式参数(形参):在定义方法的时候形式上定义的参数,此参数还没有值2.实际参数(实参):在调用方法的时候给形参赋予的具体的值publicclassDemo04method{publicstaticvoidmain(String[]args){intsum=sum(34,65);......
  • 使用Spring AI和LLM生成Java测试代码
    背景     AIDocumentLibraryChat项目已扩展至生成测试代码(Java代码已通过测试)。该项目可为公开的Github项目生成测试代码。只需提供要测试的类的网址,该类就会被加载、分析导入,项目中的依赖类也会被加载。这样,LLM就有机会在为测试生成模拟时考虑导入的源类。可以提供te......
  • Java学习十六—掌握注解:让编程更简单
    一、关于注解1.1简介Java注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。​初学者可以这样理解注解:想像代码具有生命,注解就是对于代码中某些鲜活个体的贴上去......
  • java+vue计算机毕设高校毕业生就业竞争力分析及应用【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高等教育的普及与深化,高校毕业生数量逐年增加,就业市场竞争日益激烈。在这一背景下,高校毕业生的就业竞争力成为了社会关注的焦点。面对多元化的就......
  • Java的引用是什么
    Java中的引用是一种关联,可以让我们通过引用操作或访问对象。Java有四种类型的引用:强引用、软引用、弱引用和虚引用,它们在对象的生命周期、垃圾回收等方面有着不同的作用。理解引用的特性对于写出优质的Java代码至关重要。强引用是最常见的引用。如果一个对象具有强引用,那么垃圾收......
  • (附项目源码)Java开发语言,springboot 校园羽毛球馆预约管理系统,计算机毕设程序开发+文案
    摘  要随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。校园羽毛球馆预约管理系统,主要的模块包括管理员;首页、网站管理(轮播图、场馆公告)人员管理(管理员、普通用户、教练用户)内容管理(体育新闻、新闻分类列表)模......
  • (附项目源码)Java开发语言,springboot 测评成绩统计及分析模块的设计与实现 39,计算机毕设
    摘 要测评成绩统计及分析模块是综合素质测评系统的设计与实现中的关键部分。通过该模块,可以对学生的各项测评成绩进行统计和分析,从而了解学生的综合素质水平。这对于高校和学生来说都具有重要的研究意义和实践价值。传统的考试成绩只能反映学生的学习能力,而综合素质测评系......