Java Jung несовместимое приведение типов
Я пытаюсь перебрать множество вершин. Вершины - это пользовательский класс, который я создал. Вот моя попытка перебрать вершины:
bCentral2 = new BetweennessCentrality<MyVertex, MyEdge>(g2);
for(MyVertex v : g2.getVertices())
{
v.setCentrality(bCentral2.getVertexScore(v));
}
Ошибка, которую я получаю от строки: MyVertex v : g2.getVertices()
и сообщение:
incompatible types
required: graphvisualization.MyVertex
found: java.lang.Object
Итак, я попытался привести к ArraryList<MyVertex>
и я получил это сообщение об ошибке:
Exception in thread "main" java.lang.ClassCastException: java.util.Collections$UnmodifiableCollection cannot be cast to java.util.ArrayList
- Как я могу перебрать свой набор вершин?
- Конечная цель - установить центральность каждой вершины.
Ниже приведен мой код для класса MyVertex:
public class MyVertex
{
int vID; //id for this vertex
double centrality; //centrality measure for this vertex
public MyVertex(int id)
{
this.vID = id;
this.centrality=0;
}
public double getCentrality()
{
return this.centrality;
}
public void setCentrality(double centrality)
{
this.centrality = centrality;
}
public String toString()
{
return "v"+vID;
}
}
1 ответ
Решение
Я предполагаю, что g2.getVertices()
возвращает коллекцию так что вы можете конвертировать ваши Collection
в ArrayList
как:
ArrayList<MyVertex> ll = new ArrayList<>(g2.getVertices())
Вот документация