Несоответствие в методе сравнения Java в Strings [duplicate]

Если вторая компания рада за то, что вы получили доступ к их контенту в IFrame, тогда им нужно снять ограничение - они могут сделать это довольно легко в конфигурации IIS.

Вы ничего не можете сделать, чтобы обойти это, и все, что работает, должно быстро исправляться в исправлении безопасности. Вы не можете сообщить браузеру, что он просто отображает фрейм, если заголовок исходного содержимого не разрешен в фреймах. Это будет облегчать захват сеанса.

Если контент GET только вы не отправляете данные, тогда вы можете получить сервер страницы и прокси-контент без заголовка, но затем любой пост назад должен быть признан недействительным.

4
задан vainolo 12 November 2012 в 17:38
поделиться

3 ответа

Проблема Iterator. Как указано в Java doc of PriorityQueue#iterator

Возвращает итератор по элементам в этой очереди. Итератор не возвращает элементы в каком-либо конкретном порядке.

Поскольку toString использует итератор, он не будет напечатан в порядке. Или, если вы используете цикл на основе итератора, тогда он будет в порядке.

И в Java-документе PriorityQueue

очередь запросов поиска, удаление, просмотр и элемент доступа к элементу во главе очереди.

Чтобы получить результаты в порядке, вам придется использовать один из этих методов.

2
ответ дан Amit Deshpande 15 August 2018 в 19:42
поделиться

Предлагаю вам попробовать следующий пример. Если вы используете PriorityQueue в качестве очереди, записи удаляются в порядке.

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

public class Main {
    public static void main(String... args) {
        PriorityQueue<Flight> flights = new PriorityQueue<Flight>(5, new SortQueueViaPriority());
        flights.add(new Flight("0001", 9));
        flights.add(new Flight("0002", 7));
        flights.add(new Flight("0003", 1));
        flights.add(new Flight("0004", 2));
        flights.add(new Flight("0005", 1));

        while (!flights.isEmpty())
            System.out.println(flights.remove());
    }
}

class SortQueueViaPriority implements Comparator<Flight> {
    @Override
    public int compare(Flight f1, Flight f2) {
        return Integer.compare(f2.getPriority(), f1.getPriority());
    }
}

class Flight {
    private final String name;
    private final int priority;

    Flight(String name, int priority) {
        this.name = name;
        this.priority = priority;
    }

    public int getPriority() {
        return priority;
    }

    @Override
    public String toString() {
        return "Flight{" +
                "name='" + name + '\'' +
                ", priority=" + priority +
                '}';
    }
}

печатает

Flight{name='0001', priority=9}
Flight{name='0002', priority=7}
Flight{name='0004', priority=2}
Flight{name='0003', priority=1}
Flight{name='0005', priority=1}

Примечание: PriorityQueue сортирует записи таким образом, что только первый элемент будет маленький. Если вы перейдете по очереди, вы увидите все элементы, но они могут быть или не быть в порядке.

4
ответ дан Christopher Perry 15 August 2018 в 19:42
поделиться
  • 1
    @dacwe Правильно, вот как OP реализовал его в любом случае. – Peter Lawrey 12 November 2012 в 17:41
  • 2
    Нечетный для меня печатает – user1817988 12 November 2012 в 17:43
  • 3
    Полет [flightID = 0003, приоритет = 1] Рейс [flightID = 0005, приоритет = 1] Рейс [flightID = 0002, приоритет = 7] Рейс [flightID = 0001, приоритет = 9] Рейс [flightID = 0004, приоритет = 2] – user1817988 12 November 2012 в 17:43
  • 4
    Как я уже отмечал, этого можно ожидать. – Peter Lawrey 12 November 2012 в 17:45
  • 5
    о, спасибо. – user1817988 12 November 2012 в 17:46

Вместо Comparator просто используйте интерфейс Comparable.

Класс Flight должен реализовывать интерфейс Comparable. Затем вам необходимо переопределить метод compareTo(). В этом методе вы можете добавить свою собственную логику для сортировки на основе необходимого вам свойства.

Так же:

@Override
public int compareTo(Object obj) {
    // TODO Auto-generated method stub
    Flight f = (Flight)obj;
    if(this.a <f.a){
    return 1;
    }else{
        return -1;
    }
}
0
ответ дан Rodia 15 August 2018 в 19:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: