Form a loop with previous and next
You can use a for-each iterator instead of using indexes.
It would be somewhat simpler, like this:

Edge previous = edges.get(nodeList.size() - 1);
for (Edge edge : edges) {
    edge.previous = previous;
    previous.next = edge;
    previous = edge;
}




Suppose the initial list of edges is not in an ArrayList which allows quick random access but another kind of iterable. Then, you could rewrite this way without accessing any element by index:

Iterator&lt;Edge&gt; iter = edges.iterator();

Edge first = iter.next();
Edge previous = first;
Edge edge = null;

while (iter.hasNext()) {
    edge = iter.next();
    edge.previous = previous;
    previous.next = edge;
    previous = edge;
}

if (edge != null) {
    edge.next = first;
    first.previous = edge;
}