For this assignment, you will implement a priority queue using a binary heap. Your constructor must take in a BiPredicate that tells if the first argument is larger than the second.
In addition to the binary heap, you will also implement a solution to a common interview question that uses a priority queue. The problem is to find the K-largest elements in a list of N values. One approach to doing this is to run through all the values, adding each one to a min-priority queue. (That is a priority queue where the highest priority is the smallest value.) If the priority queue has more than K elements, you dequeue so it only has K. At the end of the loop, the priority queue will have K elements, and they will be the largest.
Put your unit test in the test folder. When you run gradle test it will generate test coverage. That is put in the file app/build/jacocoHtml/csci2320/index.source.html. The number of points you get depends on your coverage of the files where you are adding code. Full points for 95% coverage or better. Half points for 90-95% coverage. Quarter points for 80-90% coverage.
You can run the speed test that I will use by running gradle run and entering "speed". The output will be different at different times and on different computers, but on a given computer you should be able to check when you make changes that make it run faster.