У меня проблема с операцией, которую я пытаюсь выполнить в Java с помощью класса TreeSet.У меня есть класс с моим пользовательским объектом, вот код:
package soluzione;
class Building_event {
//campi
private String type;
private int y;
private String p;
private String l;
private int d;
private int b;
private int h;
private int lateral_profile;
//costruttore build
public Building_event(String type,int y, String p, String l, int d, int b, int h) {
this.type = type;
this.y = y;
this.p = p;
this.l = l;
this.d = d;
this.b = b;
this.h = h;
this.lateral_profile = b + d;
}
//costruttore demolish
public Building_event(String type, int y, String p) {
this.type = type;
this.y = y;
this.p = p;
}
//setter e getter
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public String getP() {
return p;
}
public void setP(String p) {
this.p = p;
}
public String getL() {
return l;
}
public void setL(String l) {
this.l = l;
}
public int getD() {
return d;
}
public void setD(int d) {
this.d = d;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
public int getH() {
return h;
}
public void setH(int h) {
this.h = h;
}
public int getLateral_profile() {
return lateral_profile;
}
public void setLateral_profile(int lateral_profile) {
this.lateral_profile = lateral_profile;
}
public String getType() {
return type;
}
public void setType (String type) {
this.type = type;
}
@Override
public String toString() {
String res = "";
if (type.equals("build")) {
res = "Building_event [type=" + type + ", y=" + y + ", p=" + p + ", l=" + l + ", d=" + d + ", b=" + b + ", h="
+ h + ", lateral_profile=" + lateral_profile + "]";}
else if (type.equals("demolish")) {
res = "Building_event [type=" + type + ", y=" + y + ", p=" + p + "]";
}
return res;
}
}
Я также написал метод, который строит деревья с помощью специального компаратора:
public class LateralProfileComp implements Comparator<Building_event> {
@Override
public int compare(Building_event b1, Building_event b2) {
if (b1.getLateral_profile() >= b2.getLateral_profile())
return 1;
else if (b1.getLateral_profile() < b2.getLateral_profile())
return -1;
else return 0;
}
}
Деревопостроен правильно, но мой вопрос: поскольку я упорядочил свои элементы в дереве в соответствии с lateral_profile, как я могу получить подмножество элементов, у которых lateral_profile больше определенного значения, которое я указываю?Я знаю, что класс TreeSet имеет методы подмножества рекламных наборов, но для сравнения требуется элемент.Должен ли я создать элемент исключительно для этой цели?Спасибо в andvance.