У меня есть класс Vertex
, у которого есть поле 'element', которое является универсальным типом T
. Класс Vertex
можно увидеть ниже:
public class Vertex<T>{
private ObjectProperty<T> element;
private BooleanProperty visited;
public Vertex() {
element = null;
visited = new SimpleBooleanProperty(false);
}
public Vertex(T element) {
this.element = new SimpleObjectProperty<T>(element);
this.visited = new SimpleBooleanProperty(false);
}
public Vertex(T element, boolean visited) {
this.element = new SimpleObjectProperty<T>(element);
this.visited = new SimpleBooleanProperty(visited);
}
public void setElement(T elem) {
this.element.set(elem);
}
public T getElement() {
return this.element.get();
}
public ObjectProperty<T> elementProperty(){
return this.element;
}
public void setVisited(boolean b) {
this.visited.set(b);
}
public boolean isVisited() {
return this.visited.get();
}
public BooleanProperty visitedProperty(){
return this.visited;
}
@Override
public boolean equals(Object o) {
if(o == this) {
return true;
}
if(!(o instanceof Vertex<?>)) {
return false;
}
Vertex<?> v= (Vertex<?>) o;
if(v.getElement() instanceof String) {
return v.getElement().equals(this.element.get());
}else {
return v.getElement() == this.element.get();
}
}
@Override
public String toString() {
return element.get().toString();
}
}
У меня есть ArrayList
из Vertex<T>
объектов, которые я хочу отсортировать по элементу вершины. В моем приложении тип элемента вершины может быть Integer
, Double
или String
.
Я пытался использовать Comparator
, но я не уверен, как они работают, ниже вы можете увидеть, что я пытался реализовать:
listOfNeighbours.sort(Comparator.comparing(Vertex::getElement));
, где listOfNeighbours
- это ArrayList
из Vertex<T>
объектов. Я получаю ошибку для Vertex::getElement
о том, что 'Тип Vertex не определяет getElement (Object), который применим здесь'