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
  1. Как я могу перебрать свой набор вершин?
  2. Конечная цель - установить центральность каждой вершины.

Ниже приведен мой код для класса 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())

Вот документация

Другие вопросы по тегам