Как обновить атрибут объекта в Java с приоритетной очередью? - PullRequest
0 голосов
/ 22 октября 2018

Если у меня есть класс с четырьмя атрибутами и их геттерами и сеттерами:

public class Shape {

    private int id;
    private int length;
    private int width;
    private int height;

    Shape(int id, int length, int width, int height){
        this.id = id;
        this.length = length;
        this.width = width;
        this.height = height;
    }

    public int getId() {
        return id;
    }

    public int getLength() {
        return length;
    }

    public void setLength(int length) {
        this.length = length;
    }

    public int getWidth() {
        return width;
    }

    public void setWidth(int width) {
        this.width = width;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

}

В моем основном классе у меня есть PriorityQueue фигур, упорядоченных по высоте.Мой вопрос: как я могу найти объект в моем PriorityQueue и обновить его длину и ширину?

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

public class Main {

    public static void main(String[] args) {

        Comparator<Shape> comparator = Comparator.comparing(Shape::getHeight);
        PriorityQueue<Shape> shapes = new PriorityQueue<Shape>(comparator);
        shapes.add(new Shape(1,10,10,10);
        shapes.add(new Shape(2,20,20,20);
        shapes.add(new Shape(3,30,30,30);
    }

    //What I want to do is
    for(each element s in shapes){
        if(s.equals(shape){
            //update the length and width of element s in the priority queue
        }
    }
}

PS: я должен реализовать его как PriorityQueue

...