PriorityQueue- máximo del montón Comparador comparar la redacción / (desbordamiento)

Hoy en día, el uso de PriorityQueue máximo del montón, escribió un error.

redacción original:

        Queue<Integer> heap = new PriorityQueue<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });

Después de lambda simplificada:

Queue<Integer> heap = new PriorityQueue<>((o1, o2) -> o2 - o1);

Señalar aquí o2-o1 se desbordará, que dará lugar a resultados incorrectos.

Por lo tanto, el uso de este enfoque es mejor:

        Queue<Integer> heap = new PriorityQueue<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2.compareTo(o1);
            }
        });

Después de lambda simplificada:

Queue<Integer> heap = new PriorityQueue<>((o1, o2) -> o2.compareTo(o1));

que

Queue<Integer> heap = new PriorityQueue<>(Comparator.reverseOrder());

Supongo que te gusta

Origin www.cnblogs.com/angelica-duhurica/p/12592230.html
Recomendado
Clasificación