在优先级队列中分配随机优先级?

时间:2021-04-18 01:32:04

标签: java random priority-queue

我正在为 ServiceDesk 分配列表分配随机优先级(即高、中、低)。

在此之前,我想知道如何在所述优先级队列中存储(和打印)数组。这是我目前拥有的。

*更新代码

import java.util.*;
import java.util.Random;

public class Demo {

      public static void main (String[] args) {
          
      String [] names = {
         "Tanya Turner","Juana Downs","Mac Bautista","Leanne Donaldson",
         "Jere Romero","Autumn Hayden","Vincenzo Mckee","Penelope Stanley",
         "Rose Solis","Randal Savage","Delia Hardy","Alisha Hebert","Johnson Jefferson",
         "Gregorio Richard","Jana Simmons","Marian Shepherd","Lynn Pugh","Christine Newman",
         "Essie Frederick","Jewel Oneill","Raul Coleman","Lou Glover","Cora Rush",
         "Damien Norris","Omer Parsons","Adolph Petersen","Dane Proctor","Norbert Ritter",
         "Gloria Dickerson","Ella Morton","Madeline Mccullough","Patsy Berger","Tory Hardin",
         "Sonny Guzman","Kathrine Bond","Teodoro Bolton","Aimee Moran","Jerry Rhodes",
         "Palmer Golden","Zelma Hobbs","Marcella Patel","Freddy Lucas","Ladonna Hutchinson",
         "Devon Boone","Sue Graves","Chadwick Mcpherson","Antonia Rocha","Roseann Peters",
         "Leif Riggs","Judith Mcbride","Frances Simon","Nora Cervantes","Alba Hickman",
         "Concetta Wu","Chelsea Eaton","Dana Rocha","Hubert Kaiser","Phillip Stephenson",
         "Estela Kent","Rene Hughes","Clement Gilmore","Arlie Fernandez","Teodoro Buckley",
         "Daniel Chavez","Jeffry Shepherd","Devin Case","Eric Cooley","Dina Duncan","Teddy Price",
         "Matthew Cooke","Andres Dalton","Clayton Fields","Vito Lara","Lynette Mccann","Greta Choi",
         "Santo Noble","Thurman Douglas","Therese Norton","Juliette Graves","Fran Vang",
         "Forrest Gibbs","Cameron Bernard","Tracy Zhang","Hugh Huerta","Jaime Huynh","Tami Cordova",
         "Jami Mcpherson","Melissa Stein","Rayford Brewer","Tammie Lucero","Marcia Velez","Jasper Watkins",
         "Cora Chapman","Vickie Mccarthy","Gino Pena","Chadwick Hutchinson","Antonio Bryan",
         "Zachery Barnett","Randy Crawford","Laura Barton","Nolan Leach","Deborah Perry",
         "Georgina Sanford","Heidi Anthony","Leah Hester","Dong Swanson","Genevieve Wagner",
         "Russell Todd","Sherman Wolfe","Bo Schultz","Rosalyn Stevens","Brooke Moses","Jasmine Brock",
         "Guadalupe Andersen","Emilio Horne","Clara Spencer","Raul Levine","Colton Adams","Eve Avila",
         "Donny Murray","Laverne Valentine","Wilbert Gilbert","Justine Terrell","Waldo Nielsen",
         "Erma Mason","Brandie Sullivan","Murray Torres","Angelique Whitney","Shanna Humphrey",
         "Graig Farley","Lindsay Hines","Susanne Compton","Frankie Frank","Saundra Marks","Lorna Skinner",
         "Josephine Boyle","Maynard Wagner","Ronda Potts","Elias French","Gilberto Nguyen"
         };
      
         String[] priority = {"High", "Medium", "Low"};
         Random r = new Random();
         
         for (String i : names) {
            System.out.println("Names are: " + i);
            int randomPriority = r.nextInt(priority.length);
            System.out.println("Priority: " + priority[randomPriority]);
         }
            

       
               
   }
}

2 个答案:

答案 0 :(得分:1)

听起来您是在寻求有关如何入门的帮助。您正在寻求学习学习方面的帮助。以下是我将如何解决您的问题:

显然你应该使用优先队列。

  1. 编写一个小程序,创建一个优先级队列并将字符串存储到其中,然后将它们打印出来。
  2. 定义一个类并将该类的实例存储到优先级队列而不是字符串中。
  3. 修改优先队列上的排序条件,注意打印的顺序会根据排序条件发生变化。
  4. 编写一个函数,用随机值创建一个类实例。
  5. 编写一个函数来创建所有 100 个类实例。
  6. 宣布胜利。

答案 1 :(得分:0)

优先级队列本身不存储优先级。相反,它提供了一个钩子,它询问“这个项目的优先级是什么?”并且您的代码以优先级响应。因此,您需要根据优先级来扩充您存储的项目。

换句话说,您需要使用比纯字符串更丰富的数据格式。您可能应该并排存储名称及其优先级。它调用带有 authorpriority 等字段的自定义类。

enum Priority {
    LOW,
    MEDIUM,
    HIGH
}

class Ticket {
    String author;
    String description;
    Priority priority;
}

您可以在创建每个 Ticket 时分配随机优先级。

绑定优先级队列和 Ticket 类的粘合剂是一个自定义比较器。使用 -> lambda 语法编写一个非常简单:

PriorityQueue<Ticket> queue = new PriorityQueue<>(
    Comparator.comparing(ticket -> ticket.priority)
);