/ / Der kürzeste Weg, um das mittlere Element in einer Array-Liste der Größe 1000 zu finden - Array-Liste, Sammlungen

Kürzeste Methode zur Suche des mittleren Elements in einer Arrayliste der Größe 1000 - Arrayliste, Sammlungen

Was ist der kürzeste Weg, um das mittlere Element in einer Arrayliste der Größe 1000 zu finden? (Gibt es einen anderen Weg, als arraylist.length () zu verwenden?)

Antworten:

0 für die Antwort № 1

Es stellt sich heraus, dass ein richtiger ArrayList object (in Java) behält seine Größe als Eigenschaft des Objekts bei, so dass ein Aufruf von arrayList.size() greift einfach auf eine interne Ganzzahl zu. Einfach.

/**
* Returns the number of elements in this list.
*
* @return the number of elements in this list
*/
public int size() {
return size;
}

Es ist sowohl die kürzeste (in Bezug auf Zeichen) als auch die schnellste (in Bezug auf die Ausführungsgeschwindigkeit) verfügbare Methode.

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#ArrayList.0size

Angenommen, Sie möchten das "mittlere" Element (d. H. Element 3 in einer Liste von 5 Elementen - 2 Elemente auf beiden Seiten), dann ist dies:

Object item = arrayList.get((arrayList.size()/2)+1);

Jetzt wird es ein wenig kniffliger, wenn Sie über ein Array gleicher Größe nachdenken, da es keine exakte Mitte gibt. In einem Array mit 4 Elementen befindet sich ein Element auf der einen Seite und zwei auf der anderen Seite.

Wenn Sie akzeptieren, dass die "Mitte" voreingenommen sein wirdAm Ende des Arrays funktioniert auch die obige Logik. Andernfalls müssen Sie feststellen, wann die Größe der Elemente gerade ist, und sich entsprechend verhalten. Wickeln Sie Ihre Propeller-Beanie-Freunde auf ...

Object item = arrayList.get((arrayList.size()/2) + (arrayList.size() % 2));

0 für die Antwort № 2

Wenn Sie eine Einschränkung haben, weil Sie die Methode arraylist.size () / arraylist.length () nicht verwenden; Sie können verwenden zwei Iteratoren. Einer von ihnen iteriert vom Anfang bis zum Ende des Arrays, der andere vom Ende bis zum Anfang. Wenn sie den gleichen Index in der Arrayliste erreichen, finden Sie das mittlere Element.

Möglicherweise sind einige zusätzliche Steuerelemente erforderlich, um sicherzustellen, dass die Iteratoren vor der nächsten Iteration aufeinander warten. Sie sollten den Treffpunkt nicht verpassen.

Während des Iterierens behalten Sie für beide Iteratoren die Gesamtzahl der gelesenen Elemente bei. Sie sollten also ein Element in einem Zyklus durchlaufen. Mit ZyklusIch meine einen Prozess, der die folgenden Vorgänge umfasst:

  • IteratorA liest ein Element von Anfang an
  • IteratorB liest ein Element vom Ende

Die Iteratoren müssen möglicherweise mehr als einen Index lesen, um ein Element zu lesen. Mit anderen Worten, Sie sollten ein Element in einem Zyklus überspringen, nicht einen Index.