public Edge getEdge (int i) {
return allEdges[i];
}
List<Edge>
.Das behauptet Java gar nicht. Java sagt dir, ArrayList sei kein Array.Warum behauptet Java ArrayList sei keine ArrayList??
Nope:Der Zugriff auf ein Element einer ArrayList über den Index, erfolgt mittels der Methode get().
https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#get(int)
Der Zugriff über die eckige Klammer gilt für ein Array.
Und was den Rückgabewert angeht: Wenn du ein einzelnes Element aus der Liste zurückgeben möchtest, dann ist der Rückgabetyp auch vom Typ der enthaltenen Elemente (das was @Joreyk geschrieben hat). Willst du eine Liste von Elementen zurückgeben, dann ist es z. B. wie im ersten Beitrag oder mit Verwendung des InterfacesList<Edge>
.
public ArrayList<Edge> getEdge (int i) {
return allEdges.get(i);
}
Und was den Rückgabewert angeht: Wenn du ein einzelnes Element aus der Liste zurückgeben möchtest, dann ist der Rückgabetyp auch vom Typ der enthaltenen Elemente
Ach so, wie bekomme ich dann die Ecken in eine Liste rein, wenn ich getEdge aufrufe?Hallo! Bitte nochmal lesen:
get() liefert ein einzelnes Element zurück, keine Liste von Elementen.
Du sprichst in Rätseln! Deine Methode holt ein Element aus der Liste heraus. Für "rein" gibt es z. B. add() (siehe Doku, Link ist oben).Ach so, wie bekomme ich dann die Ecken in eine Liste rein, wenn ich getEdge aufrufe?
Was willst du denn machen?Egal, hat sich erledigt. Wenn das nur ein einzelnes Element zurück gibt ist es unbrauchbar
Was ist dennIch würde gerne diese Methode aufrufen.
s
in getEdge(s)
? Diese Variable ist in der Methode nicht definiert.Ok. Es soll eine Methode getEdges() geben, die mehrere Edges aus einer Liste liefern soll und genau einen Integer-Parameter hat. Welche Edges sollen mit diesem Parameter aus der Liste von Edges zurück gegeben werden ? Alle vom Anfang bis zu dieser Position, alle von dieser Position bis zum Ende? Was ganz anderes?Das muss (start) heißen.
public List<Edge> getEdges(final int n) {
ArrayList<Edge> result = new ArrayList<>();
for (int i = 0; i < allEdges.size(); i += n) {
result.add(allEdges.get(i));
}
return result;
}
Dann geht durch alle Werte in der Liste, bis du das Element mit dem gewünschten Gewicht gefunden hast und gib das zurück. Wenn du an einem bestimmten Index beginnen willst dann fang halt mit diesem Element an. Wie du an den Inhalt an einem bestimmten Index kommst, das weißt du ja.Ich will genau einen integer Wert da raus haben und zwar das Gewicht.
Wie was? Deine Kurzangebundenheit nervt etwas. Wenn du etwas willst, dann versuch dich so zu artikulieren, dass man nicht ständig nachfragen muss.
Es stehen schon mehrere Beispiele hier, wie man alle Elemente durchgeht.