java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
最近在准备找工作的事情,就复习了一下java。翻了一下书和网上的教材,发现虽然很多书是用java讲数据结构的,但是侧重于将数据结构本身的知识,利用java本身的类库来实现数据结构的系统性的讲解少之又少,所以在此做一下总结,方便各位正在准备工作的和用java实现数据结构的朋友们。
附:代码下载:http://download.csdn.net/detail/sunnyskyliu/4754827
栈:
- void m_stack()
- {
- //Stack
- Stack<String> st=new Stack<String>();
- //Stack<Integer> st=new Stack<Integer>();
- st.push("1a");
- st.push("2b");
- st.push("3c");
- st.push("4d");
- System.out.println("pop is:"+st.pop());
- System.out.println("size is:"+st.size());
- System.out.println("peek is:"+st.peek());
- System.out.println("isEmpty is:"+st.isEmpty());
- System.out.println("toString is:"+st.toString());
- System.out.println();
- }
队列:
- void m_queue()
- {
- //Queue
- Queue<String> qu=new LinkedList<String>();//wrong:Queue<String> qu=new Queue<String>();
- qu.add("1a");
- qu.add("2b");
- qu.add("3c");
- qu.add("4d");
- //qu.offer("4d");//equal to add,but no exception
- System.out.println("remove is:"+qu.remove());
- //System.out.println("poll is:"+qu.poll());//equal to remove,but no exception
- System.out.println("peek is:"+qu.peek());
- System.out.println(qu.toString());
- System.out.println();
- }
优先级队列:
- class m_priorityQueue extends PriorityQueue<m_priorityQueue>
- implements Comparable<m_priorityQueue>
- {
- private char primary;
- private int secondary;
- private String item;
- public m_priorityQueue(String td,char pri,int sec){
- item = td;
- primary = pri;
- secondary = sec;
- }
- //for comparable
- public int compareTo(m_priorityQueue arg) {
- if(primary > arg.primary)
- return +1;
- if(primary == arg.primary)
- if(secondary > arg.secondary)
- return +1;
- else if(secondary == arg.secondary)
- return 0;
- return -1;
- }
- public String toString()
- {
- return Character.toString(primary)+ secondary + ": " + item;
- }
- public void add(String td,char pri,int sec)
- {
- super.add(new m_priorityQueue(td,pri,sec));
- }
- public void run()
- {
- add("sixth",'C',4);
- add("second",'A',2);
- add("fourth",'B',7);
- add("fifth",'C',3);
- add("first",'A',1);
- add("third",'B',1);
- while(!isEmpty())
- System.out.println(remove());
- }
- }
链表:
- //link list
- void m_linkList()
- {
- LinkedList<String> head = new LinkedList<String>();
- head.add("1");
- head.add("3");
- head.add(1, "2");
- //鏈表會自動用遍歷的方式打印所有內容
- System.out.println(head);
- System.out.println("size is:"+head.size());
- //利用Vector或者是ArrayList等Collection往鏈表中加數據
- Vector<String> v = new Vector<String>(); //need to import java.util.Vector;
- //LinkedList<String> v=new LinkedList<String>();
- //向Vector中加入東西
- v.add("a");
- v.add("b");
- //將當前Vector加在當前鏈表的最后
- head.addAll(v);
- System.out.println(head);
- //將當前Vector加在當前鏈表的指定位置
- head.addAll(2, v);
- System.out.println(head);
- //打印指定位置的內容
- System.out.println("get(2) is:"+head.get(2));
- System.out.println("index is:"+head.indexOf(head.get(2)));
- head.addFirst("fist");
- head.addLast("last");
- System.out.println(head);
- //刪除第一個
- head.remove(head.getFirst());
- head.remove(head.getLast());
- System.out.println(head);
- //再刪除第一個,采用下標的方式,下標從0開始
- head.remove(0);
- System.out.println(head);
- System.out.println();
- }
( 鸣谢:http://wangyu.iteye.com/blog/190762)
哈希:
- void m_hash()
- {
- Hashtable<String, Integer> h=new Hashtable<String, Integer>();
- h.put("用户1",new Integer(90));
- h.put("用户2",new Integer(50));
- h.put("用户3",new Integer(60));
- h.put("用户4",new Integer(70));
- h.put("用户1",new Integer(80));
- System.out.println("用户1: "+h.get("用户1"));
- /*
- //枚举
- Enumeration<Integer> e=h.elements();
- while(e.hasMoreElements())
- {
- System.out.println(e.nextElement());
- }*/
- for(Iterator<String> itor=h.keySet().iterator(); itor.hasNext();)
- {
- String word=itor.next().toString();
- Integer in=(Integer)h.get(word);
- System.out.println("word: "+word+" time:"+in);
- }
- }
main调用:
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- dataStructure da=new dataStructure();
- da.m_stack();
- da.m_queue();
- da.m_linkList();
- da.m_hash();
- dataStructure.m_priorityQueue pqueue=da.new m_priorityQueue(null, '0', 0);
- pqueue.run();
- }
java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表的更多相关文章
- java面向对象的栈 队列 优先级队列的比较
栈 队列 有序队列数据结构的生命周期比那些数据库类型的结构(比如链表,树)要短得多.在程序操作执行期间他们才被创建,通常用他们去执行某项特殊的任务:当完成任务之后,他们就会被销毁.这三个数据结构还有一 ...
- 自己动手实现java数据结构(八) 优先级队列
1.优先级队列介绍 1.1 优先级队列 有时在调度任务时,我们会想要先处理优先级更高的任务.例如,对于同一个柜台,在决定队列中下一个服务的用户时,总是倾向于优先服务VIP用户,而让普通用户等待,即使普 ...
- java数据结构与算法值优先级队列
一.优先级队列 什么是优先级队列:优先级队列是一种比栈和队列更加常用的一种数据结构.在优先级队列中,数据项按照关键字的值有序.数据项插入到队列中时,会按照顺序插入到合适的位置,用来保证队列的顺序. 生 ...
- C#部分---特殊集合:stack栈集合、queue队列集合、哈希表集合。
1.stack栈集合:又名 干草堆集合 栈集合 特点:(1)一个一个赋值 一个一个取值(2)先进后出实例化 初始化 Stack st = new Stack(); //添加元素用push st.Pus ...
- Stack集合 Queue队列集合 Hashtable哈希表
Stack集合 干草堆集合 栈集合 栈;stack,先进后出,一个一个赋值,一个一个取值,安装顺序来. 属性和方法 实例化 初始化 Stack st = new Stack(); 添加元素 个数 Co ...
- Java数据结构和算法(十三)——哈希表
Hash表也称散列表,也有直接译作哈希表,Hash表是一种根据关键字值(key - value)而直接进行访问的数据结构.它基于数组,通过把关键字映射到数组的某个下标来加快查找速度,但是又和数组.链表 ...
- 数据结构与算法Python版 熟悉哈希表,了解Python字典底层实现
Hash Table 散列表(hash table)也被称为哈希表,它是一种根据键(key)来存储值(value)的特殊线性结构. 常用于迅速的无序单点查找,其查找速度可达到常数级别的O(1). 散列 ...
- [数据结构 - 第8章] 查找之哈希表(C语言实现)
首先是需要定义一个哈希表的结构以及一些相关的常数.其中 HashTable 就是哈希表结构.结构当中的 elem 为一个动态数组. #define HASHSIZE 12 // 定义哈希表长为数组的长 ...
- Java堆(heap)、栈(stack)和队列的区别
Java里面Stack有两种含义: 一:数据结构 Stack,即java.util.Stack import java.util.Stack; import java.util.Iterator; i ...
- JavaScript数据结构与算法(三) 优先级队列的实现
TypeScript方式实现源码 // Queue类和PriorityQueue类实现上的区别是,要向PriorityQueue添加元素,需要创建一个特殊的元素.这个元素包含了要添加到队列的元素(它可 ...
随机推荐
- Oracle VM VirtualBox启动新建虚拟机弹错--不能为虚拟机xxxx电脑 打开一个新任务
有三种方案: 1.先在任务管理器中关掉所有virtualBox的进程,然后进入到C:\Users\Administrator\VirtualBox VMs\ 将相应guest的文件夹随便改个名字,再重 ...
- OC:数组排序、时间格式化字符串
数组排序 //不可变数组的排序 NSArray * arr = [NSArray arrayWithObjects:@"hellow", @"lanou", @ ...
- CentOS中设置Windows共享文件夹
在CentOS中设置Samba可实现和Windows共享文件夹.常见的需求:1)用户能够在Windows机器上通过共享文件夹访问远程Linux服务器上自己的主目录:2)用户能够在Windows机器上访 ...
- ODBC数据管理器 SqlServer实时数据同步到MySql
---安装安装mysqlconnector http://www.mysql.com/products/connector/ /* 配置mysqlconnector ODBC数据管理器->系统D ...
- Docker的基础知识与安装(Ubantu CentOS)
Docker是一种允许特殊类型虚拟化的实用程序.Docker允许使用Docker镜像在系统上“虚拟”运行程序.可以下载或创建可以运行的图像.一旦加载并执行了图像,它现在就是一个容器.容器已为容器内的程 ...
- 前端基础jQuery
jQury jQuery 是一个 JavaScript 函数库,jQuery 极大地简化了 JavaScript 编程. jQuery库包含以下功能: HTML 元素选取 HTML 元素操作 CSS ...
- 背包DP HDOJ 5410 CRB and His Birthday
题目传送门 题意:有n个商店,有m金钱,一个商店买x件商品需要x*w[i]的金钱,得到a[i] * x + b[i]件商品(x > 0),问最多能买到多少件商品 01背包+完全背包:首先x == ...
- Linux环境下SolrCloud集群环境搭建关键步骤
Linux环境下SolrCloud集群环境搭建关键步骤. 前提条件:已经完成ZooKeeper集群环境搭建. 一.下载介质 官网下载地址:http://www.apache.org/dyn/close ...
- 多功能Markdown编辑器MarkdownPad 2的下载、安装和初步使用步骤(图文详解)(博主推荐)
不多说,直接上干货! MarkdownPad 是什么? 一.MarkdownPad 2的下载 http://markdownpad.com/download/markdownpad2-setup. ...
- h5学习-css3的一些内容整理
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...