栈、队列 java代码实现

文章目录

  • 普通队列
    • 数组实现
    • java代码实现
      • 单元测试
      • 控制台打印
    • 链表实现
      • java代码实现
      • 单元测试
      • 控制台打印
    • LinkedList队列使用
    • 优先队列:PriorityQueue使用
    • 数组实现
      • java代码实现
      • 单元测试
      • 控制台打印
    • 链表实现
      • java代码实现
      • 单元测试
      • 控制台打印

普通队列

概念:先入先出

数组实现

java代码实现

package csdn.dreamzuora.queue;/*** @author weijie* @date 2020/10/15 19:54* Description: 先入先出*/
public class ArrayQueue {int[] queue;/*** 队头*/int head = 0;/*** 队尾*/int tail = 0;/*** 初始化* @param size*/public ArrayQueue(int size) {this.queue = new int[size];}/*** 入栈* @param data*/public boolean enqueue(int data){if (tail >= queue.length){return false;}queue[tail++] = data;return true;}/*** 出栈* @return*/public int dequeue(){return queue[head++];}public boolean isEmpty(){/*** 队头等于队尾此时表示队列为空*/if (head == tail){return true;}return false;}}

单元测试

package csdn.dreamzuora.queue;import org.junit.Test;import static org.junit.Assert.*;/*** Title:* Description:** @version 1.0* @author: weijie* @date: 2020/10/16 10:25*/
public class ArrayQueueTest {ArrayQueue queue = new ArrayQueue(10);@Testpublic void enqueue() {System.out.print("入队列:");for (int i = 0; i < 10; i++){System.out.print("->" + i);queue.enqueue(i);}System.out.println();System.out.print("出队列:");while (!queue.isEmpty()){System.out.print("->" + queue.dequeue());}}
}

控制台打印

在这里插入图片描述

链表实现

java代码实现

package csdn.dreamzuora.queue;/*** Title: Node* Description:** @version 1.0* @author: weijie* @date: 2020/10/16 9:54*/
public class Node {int data;Node next;public Node(int data) {this.data = data;}
}
package csdn.dreamzuora.queue;/*** @author weijie* @date 2020/10/15 19:56* Description:*/
public class LinkedQueue {Node head;Node tail;/*** 入栈* @return*/public void enqueue(int data){Node appendNode = new Node(data);if (tail == null){tail = appendNode;head = appendNode;}else {tail.next = appendNode;tail = appendNode;}}/*** 出栈*/public int dequeue(){int data = head.data;head = head.next;return data;}public boolean isEmpty(){if (head == null){return true;}return false;}
}

单元测试

package csdn.dreamzuora.queue;import org.junit.Test;import java.util.LinkedList;import static org.junit.Assert.*;/*** Title:* Description:** @version 1.0* @author: weijie* @date: 2020/10/16 10:25*/
public class LinkedQueueTest {LinkedQueue queue = new LinkedQueue();@Testpublic void enqueue() {System.out.print("入队列:");for (int i = 0; i < 10; i++){System.out.print("->" + i);queue.enqueue(i);}System.out.println();System.out.print("出队列:");while (!queue.isEmpty()){System.out.print("->" + queue.dequeue());}}
}

控制台打印

在这里插入图片描述

LinkedList队列使用

package csdn.dreamzuora.queue;import org.junit.Test;import java.util.LinkedList;/*** Title: 链表当作队列使用* Description:** @version 1.0* @author: weijie* @date: 2020/10/19 16:52*/
public class LinkedListTest {@Testpublic void example(){LinkedList<Integer> queue = new LinkedList<>();/*** 入队*/queue.offer(1);queue.offer(2);queue.offer(3);/*** 出队*/while (!queue.isEmpty()){System.out.println(queue.poll());}}}

优先队列:PriorityQueue使用

package csdn.dreamzuora.queue;import org.junit.Test;import java.util.Comparator;
import java.util.PriorityQueue;/*** Title: 优先队列* Description:** @version 1.0* @author: weijie* @date: 2020/10/23 15:43*/
public class PriorityQueueTest {@Testpublic void example(){PriorityQueue<Integer> queue = new PriorityQueue<>(10);for (int i = 10; i > 0; i--){queue.add(i);}System.out.println(queue);System.out.println(queue.poll());}@Testpublic void compare(){PriorityQueue<Student> priorityQueue = new PriorityQueue<>(new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return Integer.compare(o2.getAge(), o1.getAge());}});for (int i = 0; i < 10; i++){Student student = new Student(i, "name-" + i);priorityQueue.add(student);}System.out.println(priorityQueue.peek());System.out.println("---------------------");for (int i = 20; i < 25; i++){priorityQueue.add(new Student(i, "name-" + i));}while (!priorityQueue.isEmpty()){System.out.println(priorityQueue.poll());}}class Student{Integer age;String name;public Student() {}public Student(Integer age, String name) {this.age = age;this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Student{" +"age=" + age +", name='" + name + '\'' +'}';}}
}

概念:先入后出

数组实现

java代码实现

package csdn.dreamzuora.stack;/*** @author weijie* @date 2020/10/15 16:02* Description: 先入后出*/
public class ArrayStack {int[] stack;int i = 0;/*** 初始化* @param size*/public ArrayStack(int size) {stack = new int[size];}/*** 入栈* @param data*/public boolean push(int data){if (i >= stack.length){return false;}stack[i++] = data;return true;}public boolean isEmpty(){if(i <= 0){return true;}return false;}/*** 出栈* @return*/public int pop(){return stack[--i];}}

单元测试

package csdn.dreamzuora.stack;import org.junit.Test;import static org.junit.Assert.*;/*** @author weijie* @date 2020/10/15 16:09* Description:*/
public class ArrayStackTest {ArrayStack stack = new ArrayStack(10);@Testpublic void print() {System.out.print("入栈:");for (int i = 0; i < 10; i++){stack.push(i);System.out.print("->" + i);}System.out.println();System.out.print("出栈:");while (!stack.isEmpty()){System.out.print("->" + stack.pop());}}
}

控制台打印

在这里插入图片描述

链表实现

java代码实现

package csdn.dreamzuora.stack;/*** @author weijie* @date 2020/10/15 16:19* Description:*/
public class Node {int value;Node next;public Node(int value) {this.value = value;}
}
package csdn.dreamzuora.stack;/*** @author weijie* @date 2020/10/15 16:18* Description:*/
public class LinkedListStack {private Node head;private int size = 0;public void push(Node node){if (size == 0){head = node;}else {node.next = head;head = node;}size ++;}public Node pop(){if (size != 0){Node node = head;head = head.next;size--;return node;}else {return null;}}public boolean isEmpty(){if (size <= 0){return true;}return false;}}

单元测试

package csdn.dreamzuora.stack;import org.junit.Test;import static org.junit.Assert.*;/*** @author weijie* @date 2020/10/15 16:31* Description:*/
public class LinkedListStackTest {LinkedListStack stack = new LinkedListStack();@Testpublic void print() {System.out.print("入栈:");for (int i = 0; i < 10; i++){stack.push(new Node(i));System.out.print("->" + i);}System.out.println();System.out.print("出栈:");while (!stack.isEmpty()){System.out.print("->" + stack.pop().value);}}
}

控制台打印

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

递归学习 斐波那契 java代码实现

文章目录java代码单元测试java代码 package csdn.dreamzuora.recursion;/*** Title: 斐波那契额* Description:*斐波那契数列&#xff1a;0、1、1、2、3、5、8、13、21、34、55.....* f[n] f[n-2] f[n-1]* 优点&#xff1a;代码简单* 缺点&#xff1a;占用空间较大、如果递归…

二分查找 java代码实现

文章目录二分查找java代码单元测试二分查找java代码 package csdn.dreamzuora.query;/*** Title: 二分查找* Description:* 时间复杂度&#xff1a;log2N* version 1.0* author: weijie* date: 2020/10/16 13:52*/ public class BinarySearch implements Search {int[] array;…

二叉查找树 java代码实现

文章目录代码实现节点实现类二叉树实现单元测试代码实现 节点实现类 package csdn.dreamzuora.tree;/*** Title:* Description:** version 1.0* author: weijie* date: 2020/10/19 13:30*/ public interface Node { }package csdn.dreamzuora.tree;import java.io.Serializab…

红黑树 java代码实现

文章目录代码实现节点实现类红黑树实现单元测试代码实现 节点实现类 package csdn.dreamzuora.tree;/*** Title:* Description:** version 1.0* author: weijie* date: 2020/10/19 13:30*/ public interface Node { }package csdn.dreamzuora.tree;import java.io.Serializab…

冒泡排序、快速排序 java代码实现

文章目录冒泡排序源码实现单元测试优化快速排序源码实现单元测试冒泡排序 源码实现 package csdn.dreamzuora.sort;import java.util.List;/*** Title: 冒泡排序* Description:* 冒泡排序思想是把相邻的元素进行两两比较&#xff0c;当前面元素大于后面元素则进行交换* versi…

计数排序和桶排序 java代码实现

文章目录计数排序java代码实现单元测试桶排序java代码实现单元测试计数排序 java代码实现 package csdn.dreamzuora.sort;import java.util.List;/*** Title: 抽象出排序类* Description:** version 1.0* author: weijie* date: 2020/10/22 17:59*/ public abstract class So…

堆排序和归并排序 java代码实现

文章目录堆排序java代码实现单元测试归并排序java代码实现单元测试堆排序 java代码实现 package csdn.dreamzuora.sort;import java.util.List;/*** Title: 抽象出排序类* Description:** version 1.0* author: weijie* date: 2020/10/22 17:59*/ public abstract class Sort…

Hbase入门篇

HBase&#xff1a; 数据库&#xff1a;是一种面向列族存储的非关系型数据库用于存储结构化和非结构化数据&#xff1a;适用于单表非关系型数据的存储&#xff0c;不适合做关联查询&#xff0c;类似于JOIN等操作基于HDFS&#xff1a;数据持久化存储的体现形式是HFile&#xff0…

ElasticSearch入门篇

文章目录控制台RESTFULL操作REST风格说明基于REST命令说明&#xff1a;es支持的数据类型核心数据类型ik分词器使用ik_smart最少切分ik_max_word最细粒度索引操作索引库创建创建文档方式指定索引类型(以后这种方式会被弃用)不指定索引类型利用默认的_doc类型更新文档方式一&…

【待完成】并发包下常用到线程工具类汇总

文章目录并发容器BlockingQueueArrayBlockingQueueLinkedBlockingQueuePriorityBlockingDelayQueueSynchronousQueueBlockingDequeCopyOnWriteCopyOnWriteArrayListCopyOnWriteArraySetConcurrentLinkedQueue/DequeConcurrentHashMapConcurrentSkipListMap/Set同步工具类AQS实现…

判断对象属性值是否为空

private boolean checkObjFieldIsNotNull(Object obj){try {for (Field f : obj.getClass().getDeclaredFields()) {f.setAccessible(true);if (f.get(obj) ! null) {return true;}}}catch (IllegalAccessException e){}return false;}

爬虫中如何获取页面编码类型

获取页面的编码格式的三种方式&#xff1a; 根据Response中的header获取编码格式根据页面标签中的meta获取根据页面内容识别自动识别出编码格式&#xff0c;经过测试准确率比较高 三种方式可以结合使用&#xff0c;由于inputStream不能够被复用&#xff0c;但是inputStrem没有…

记录一次异常 java.lang.NoClassDefFoundError: org/apache/lucene/codecs/lucene53/Lucene53NormsFormat

异常信息&#xff1a; java.lang.NoClassDefFoundError: org/apache/lucene/codecs/lucene53/Lucene53NormsFormatat java.lang.Class.getDeclaredConstructors0(Native Method)at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)at java.lang.Class.getCon…

Spark集群部署与架构

在大数据时代&#xff0c;处理海量数据需要分布式计算框架。Apache Spark作为一种强大的大数据处理工具&#xff0c;可以在集群中高效运行&#xff0c;处理数十TB甚至PB级别的数据。本文将介绍如何构建和管理Spark集群&#xff0c;以满足大规模数据处理的需求。 Spark集群架构…

elasticsearch高级查询进阶

文章目录前期准备应用场景1.constant_score查询-不考虑文档频率得分&#xff0c;与搜索关键字命中更多的返回结果2.sort排序-分数相同情况下&#xff0c;按照指定价格域排序3.不考虑文档频率TF/IDF情况下&#xff0c;不同域打分权重不同进行召回4.不考虑文档频率TF/IDF情况下&a…

java核心技术-多线程并发设计原理以及常见面试题

文章目录写在前面多线程回顾Thread和Runnable面试官&#xff1a;为什么我们在项目中推荐使用使用Runnable方法而不用继承Thread&#xff1f;面试官&#xff1a;Callable为什么可以带返回值&#xff0c;你知道底层原理&#xff1f;面试题&#xff1a;线程了解&#xff1f;给我讲…

java核心技术-jvm基础知识

文章目录JVM回顾JVM、JRE、JDK之间关系&#xff1f;Java程序执行过程&#xff1f;面试官&#xff1a;解释执行和JIT(及时编译)两种执行方式有什么区别&#xff1f;java虚拟机内存管理jvm整体架构JVM只是定义内存划分规范等&#xff0c;具体实现依赖不同虚拟机实现&#xff0c;如…

阿里京东滴滴等大厂面试题汇总

文章目录11月面&#xff1a;京东一面【京东云与AI-协同办公】&#xff1a;京东一面现场面【京东云与AI-平台创新组】&#xff1a;京东二面&#xff1a;11月面&#xff1a;滴滴视频面【橙心优选】&#xff1a;11月面&#xff1a;国美零售【大数据-搜索组】8月面&#xff1a;阿里…

spring boot 如何动态替换bean?

替换Bean工具类 Component public class ApplicationContextUtil implements ApplicationContextAware {private static ApplicationContext applicationContext null;Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansExcept…

elasticsearch亿级数据量全量索引导入优化方案

Hbase scan读取时候&#xff0c;调大 hbase.client.scanner.timeout.period 超时时间,不然可能会跑异常 org.apache.hadoop.hbase.UnknownScannerException: org.apache.hadoop.hbase.UnknownScannerException: Unknown scanner 479187903508737326. This can happen due to an…