Несовместимое приведение типов 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;
    }
}

person CodeKingPlusPlus    schedule 31.12.2012    source источник
comment
Не могли бы вы показать, как вы создаете экземпляр g2? Похоже, вы неправильно используете дженерики, а getVertices() возвращает Collection<Object>, поэтому цикл for не работает.   -  person Brian Roach    schedule 31.12.2012


Ответы (1)


Я предполагаю, что g2.getVertices() возвращает коллекцию. поэтому вы можете преобразовать свой Collection в ArrayList как:

ArrayList<MyVertex> ll = new ArrayList<>(g2.getVertices())

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

person Tapas Bose    schedule 31.12.2012
comment
Это не сработает. Причина, по которой его цикл for не работает, в первую очередь заключается в том, что это Collection<Object>, о чем свидетельствует ошибка «несовместимые типы», которую он получает. - person Brian Roach; 31.12.2012