Hashmap队列和PriorityQueue队列的应用

编程技术  /  houtizong 发布于 3年前   63

 

HashMap队列已经是学过了的,但是最近在用的时候不是很熟悉,刚刚重新看以一次,

  HashMap是K,v键 ,值  

 

put()添加元素

 

 

 //下面试HashMap去掉重复的

package com.hashMapandPriorityQueue;import java.util.HashMap;import java.util.Set;public class map{ public static void main(String[] args) { //创建队列 HashMap<String,Integer> map = new HashMap<String,Integer>(); //往队列添加元素 map.put("长沙", 1); map.put("长沙", 2); map.put("常德",2); map.put("武汉", 3);  //遍历队列  通过k键得到v值 Set<String> maps = map.keySet(); //遍历k键 for(String k:maps){int v= map.get(k); System.out.println(k+"<<>>>"+v); } }}

 

运行结果:

 

长沙<<>>>2

武汉<<>>>3

常德<<>>>2

 

 

//HashMap判断字符串出现的次数

 

 

package com.hashMapandPriorityQueue.com;/** * 创建HashMap来遍历每个字符串出现的个数 */import java.util.HashMap;import java.util.Set;public class hashMap {public static void main(String[] args) {hashMap test = new hashMap();// 创建字符串String str = "abbcccddddeeeee";System.out.println(test.createmap(str));}public HashMap<Character, Integer> createmap(String str) {// 创建HashMap队列保存k,v对,其中k键是唯一的 v值是不唯一的,// 如果k键存在多个后面的会覆盖掉前面的 ,,set打印的是最后一个 但是前面的还是存在的HashMap<Character, Integer> map = new HashMap<Character, Integer>();//遍历字符串for(int i = 0;i<str.length();i++){//将字符串转成字符char c = str.charAt(i);//判断是否包含元素if(map.containsKey(c)){//得到元素int v= map.get(c);v++;map.put(c, v);}else{map.put(c,1);}}return map;}}

 运行结果:

{d=4, e=5, b=2, c=3, a=1}

 

 

 

PriorityQueue<E>队列可以在创建的时候对添加的数据进行自动排序(基本数据),对象可以通过重写方法来定义排序的规则

一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法

 

<!-- -->

构造方法摘要

PriorityQueue()
使用默认的初始容量(11)创建一个 PriorityQueue,并根据其自然顺序对元素进行排序。

PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
使用指定的初始容量创建一个 PriorityQueue,并根据指定的比较器对元素进行排序。

 

方法摘要

E peek()
获取但不移除此队列的头;如果此队列为空,则返回 null
E poll()
获取并移除此队列的头,如果此队列为空,则返回 null

 

 

 

//基本数据类型添加到队列

package com.hashMapandPriorityQueue;import java.util.PriorityQueue;/** * 基本数据类型 *  * @author Administrator *  */public class priorityQueue {public static void main(String[] args) {// 创建队列PriorityQueue<String> queue = new PriorityQueue<String>();// 添加队列queue.add("长沙");queue.add("北京");queue.add("南京");queue.add("南宁");        //遍历队列for (String s : queue) {System.out.println(s);}}}

 

运行结果;

 

北京

南宁

南京

长沙

 

 

将对象添加到PriorityQueue<E>中:

创建一个PriorityQueue队列来保存Queue实例化的对象    ;代码如下

 

package com.hashMapandPriorityQueue;import java.util.Comparator;import java.util.PriorityQueue;/** * 创建一个PriorityQueue队列来保存Queue实例化的对象 *  * @author Administrator *  */public class priorityQueue {public static void main(String[] args) {// 创建队列,并创建容器的容量和排序规则PriorityQueue<Queue> list = new PriorityQueue<Queue>(11,new Comparator<Queue>() {                     //创建匿名类来重写排序方法@Overridepublic int compare(Queue o1, Queue o2) {                       //返回排序规则return o1.obj - o2.obj;}});// 如果不重写上述方法,会出现下面的错误// Exception in thread "main" java.lang.ClassCastException:// com.hashMapandPriorityQueue.priorityQueue cannot be cast to// java.lang.Comparable// 根据数组创建对象Queue queue1 = new Queue(122);Queue queue2 = new Queue(21);Queue queue3 = new Queue(33);//添加到队列中list.add(queue1);list.add(queue2);list.add(queue3);//打印队列中的元素while (!list.isEmpty()) {System.out.println(list.poll());}}}//创建Queue类class Queue {int obj;public Queue(int obj) {this.obj = obj;}    //重写String的方法@Overridepublic String toString() {return String.valueOf(obj);}}

 

输出结果:

 

21

33

122

 

 

 

 

 

 

 

 

 

 

 

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客