如何在java中的n个选项中循环排队

时间:2016-08-02 18:07:02

标签: java

我需要在java中计算队列或优先级队列中n个数字中k个数的每种可能性的总和。

1 个答案:

答案 0 :(得分:0)

在这里,我创建了一个n = 7项的队列。看看我的方法" findSumOfFirst(int k)"。 如果这不是您正在寻找的东西,至少它可能有助于循环/优先级队列。

如果您需要有关优先级队列的帮助:https://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html

    import java.util.Comparator;
    import java.util.PriorityQueue;

    public class QueueReader {
        static PriorityQueue<Double> queue = new PriorityQueue<>(new Comparator<Double>() {
            /**
             * Order the larger double first.
             *
             * @param o1
             *              First double to be compared
             * @param o2
             *              Second double to be compared
             * @return
             */
            @Override
            public int compare(Double o1, Double o2) {
                if(o1 > o2) {
                    return -1;
                }
                else if (o1 < o2) {
                    return 1;
                }
                else {
                    return 0;
                }
            }
        });


        public static void main(String[] args) {
            //Adds 7 doubles
            queue.add(0.3);
            queue.add(0.1);
            queue.add(0.1);
            queue.add(0.2);
            queue.add(0.05);
            queue.add(0.05);
            queue.add(0.2);

            int k = 4;
            int n = queue.size();
            double answer = findSumOfFirst(k);
            System.out.println(answer);
        }

        public static double findSumOfFirst(int k)
        {
            double sum = 0;
            for(int i = 0; i < k; i++)
            {
                sum += queue.poll();
            }
            return sum;
        }

    }