Vector.clear() oder neu initialisieren

redbomber

Bekanntes Mitglied
Hi zusammen,
ich habe eine Frage.
Ich habe eine Methode in der ein Vector initialisiert und mit Objekten befüllt zurück gegeben wird.
In dieser Methode kann eine Exception auftreten, die ich mit einem try catch finally block abfange.

im finally block wird der Vector zurück gegeben.

Wenn eine Exception auftritt möchte ich einen leeren Vector zurück geben.

Jetzt nur eine allgemeine Frage:
Was ist nun "korrekter".
Soll ich im catch-block den Vector neu initiallisieren?
Oder soll ich Vector.clear() aufrufen ?

Bsp:

Java:
public Vector method(){
Vector vector = new Vector();

   try{
     // do something
   } catch{
     vector = new Vector();
     // oder besser:
     // vector.clear()
   } finally {
     return vector;
   }
}[/Java]
 

AmunRa

Gesperrter Benutzer
ich würde clear machen, da du ja kein neues Objekt brauchst aber das ist nur geschmackssache.

Aber warum verwendest du eigentlich Vector und nicht ArrayList?
 

xehpuk

Top Contributor
Hi,

ich denke nicht, dass es hier ein "korrekter" gibt.

Der Code sieht ja folgendermaßen aus:
[JAVA=789] /**
* Removes all of the elements from this Vector. The Vector will
* be empty after this call returns (unless it throws an exception).
*
* @since 1.2
*/
public void clear() {
removeAllElements();
}[/code]
[JAVA=602] /**
* Removes all components from this vector and sets its size to zero.
*
* <p>This method is identical in functionality to the {@link #clear}
* method (which is part of the {@link List} interface).
*/
public synchronized void removeAllElements() {
modCount++;
// Let gc do its work
for (int i = 0; i < elementCount; i++)
elementData = null;

elementCount = 0;
}[/code]
Der Unterschied ist also, dass das Array (mit seiner Kapazität) wiederverwendet wird, während bei einem neuen Vector ein neues Array angelegt wird.

Ich präferiere das Leeren. Da hat der GC nicht so viel aufzuräumen und zum anderen setze ich bei Methoden mit einer Liste als Rückgabe gern die am Anfang initialisierte Liste final.

Es gibt aber ein paar Dinge zu bemängeln:
  • Das return sollte nicht in den finally-Block.
  • Alles so abstrakt wie möglich halten.
  • Einen generischen Typ verwenden.
Meine Variante sieht also so aus:
Java:
	public Collection<?> method() {
		final ArrayList<?> list = new ArrayList<Object>();
		try {
			// do something
		} catch (Exception e) {
			list.clear();
		}
		return list;
	}
 

tfa

Top Contributor
Ich würde eine neue, leere Liste erzeugen. Man hilft dem GC am besten, indem man Objekte so kurzlebig hält wie möglich. Objektwiederverwertung ist eher schädlich (kommt natürlich auch auf den Einzelfall an).
Wenn man hier nur clear() macht, könnte man einen leeren Vector haben, der intern Platz für 100000 Elemente hat. Wer weiß, wie lange der im Speicher rum liegt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Vector Strings in Array splitten Allgemeine Java-Themen 6
G Fehler mit Vector Allgemeine Java-Themen 3
M String Array Vector komprimieren und verschicken Allgemeine Java-Themen 3
P Vectorelemente in einen anderen Vector kopieren Allgemeine Java-Themen 12
U Vector aus Oberklasse spezialisieren Allgemeine Java-Themen 2
R Vector in JList Allgemeine Java-Themen 11
M Cast double[]-->Object[] oder Vector<double[]> Allgemeine Java-Themen 3
R Threads korrekte Synchronisation bei Vector und ArrayList Allgemeine Java-Themen 6
H Index Out of Bounds bei Vector Allgemeine Java-Themen 4
H Java Vector Frage Allgemeine Java-Themen 9
E NetBeans Vector durch ArrayList ersetzen Allgemeine Java-Themen 4
C Vector/Point-Problem Allgemeine Java-Themen 3
M Buffer-Vector einzeln und zusammen synchronisieren Allgemeine Java-Themen 4
B Suchalgorithmus der Klasse Vector Allgemeine Java-Themen 5
X Vector Allgemeine Java-Themen 3
S 2D Vector speziell ausgeben. Allgemeine Java-Themen 2
S Vector in Vector gespeichert, wie greift man darauf zu? Allgemeine Java-Themen 3
C Swing JTable Vector aus DB adden Allgemeine Java-Themen 3
S vector & strings Allgemeine Java-Themen 26
X Vector in Intervall-Menge umwandeln Allgemeine Java-Themen 4
D Array oder Vector in Enum Deklarieren Allgemeine Java-Themen 3
J Erweiterte For-Schleife mit Vector Allgemeine Java-Themen 5
G JComponent in Vector - wie klonen? Allgemeine Java-Themen 7
V Performancefrage int-Vector/Stack Allgemeine Java-Themen 10
N HashMap<String,Vector<String>> a = new HashMap<String,Vector<String>>(); Allgemeine Java-Themen 4
H GUI: RectangleDrawer - zu viele Elemente im Vector für die paint-Methode Allgemeine Java-Themen 6
S JList in Vector Allgemeine Java-Themen 3
I Vector mit Objekten sortieren,Videos mit JMF wiedergeben Allgemeine Java-Themen 6
MQue Vector<..> nicht verwenden Allgemeine Java-Themen 4
H Vector<Character> zu char[] castern Allgemeine Java-Themen 2
T Element aus Vector entfernen Allgemeine Java-Themen 4
Spot84 Vector nach Ressourcetyp sortieren Allgemeine Java-Themen 4
M get Funktion von Vector Allgemeine Java-Themen 4
N wie greife ich auf hashmap in vector zu Allgemeine Java-Themen 9
V NullPointerException bei Vector Allgemeine Java-Themen 2
E einfache Frage zu Vector Allgemeine Java-Themen 8
K Serialisierung von Hashmap in Vector Allgemeine Java-Themen 3
G Vector beim Initialisieren befüllen Allgemeine Java-Themen 4
G Vector addAll Allgemeine Java-Themen 5
B sorteiren von Datein nach Zeitstempel in einem Vector Allgemeine Java-Themen 5
W [solved] Vector sortieren (Collection / Comparable?) Allgemeine Java-Themen 7
MQue Vector Allgemeine Java-Themen 7
F Vector in eine Datenbank speichern? Allgemeine Java-Themen 3
P Vector auf JTree Allgemeine Java-Themen 6
P dynamisches Array / Vector Allgemeine Java-Themen 2
P JTable/Vector Allgemeine Java-Themen 5
T Vector und remove? Allgemeine Java-Themen 13
T Vector in JAVA ? Allgemeine Java-Themen 10
P Vector in vielen Klassen Allgemeine Java-Themen 21
MQue Vector implementieren Allgemeine Java-Themen 2
MQue Vector<State> Allgemeine Java-Themen 2
O hilfe bei Vector frage Allgemeine Java-Themen 6
F Synchronisation + Vector/ArrayList/LinkedList Allgemeine Java-Themen 7
Z Elemente in Vector nach Häufigkeit sortieren. Allgemeine Java-Themen 13
H java.util.Vector langsam ? Allgemeine Java-Themen 5
H Vector<T>[] vecs = new Vector<T>[10]; geht nicht Allgemeine Java-Themen 2
N Java API java.util.vector Allgemeine Java-Themen 3
G Vector erweitern Allgemeine Java-Themen 4
S Vector sortieren nach Objekt-Info? Allgemeine Java-Themen 9
A Probleme mit Vector Allgemeine Java-Themen 6
M Vergleich im geordeten Vector und Methodenaufruf Allgemeine Java-Themen 2
J Vector - Wert ersetzen Allgemeine Java-Themen 14
J Vector - Boolean Allgemeine Java-Themen 24
M Vector zu einem byte[] Allgemeine Java-Themen 5
J Vector<Shape> Speichern [gelöst] Allgemeine Java-Themen 11
Y Array mit ID in Vector Allgemeine Java-Themen 6
T Vector <-> double Allgemeine Java-Themen 4
T ArrayList bzw. Vector per set-Methode? Allgemeine Java-Themen 3
T ArrayList oder Vector als Parameter? Allgemeine Java-Themen 7
M Vector add() unchecked? Allgemeine Java-Themen 5
M Probleme und Zeitdruck: Kunden-DB (Vector) Allgemeine Java-Themen 13
T Vector Array Allgemeine Java-Themen 5
M Kunden-DB mit Vector Allgemeine Java-Themen 9
J Vector sortieren Allgemeine Java-Themen 3
M Vector - contain Allgemeine Java-Themen 13
C String und char[] / String[] und Vector Allgemeine Java-Themen 21
N Vector -> 2Diminsonaler Array Allgemeine Java-Themen 10
N Alledateien in einem Ordner in ein Vector speichern Allgemeine Java-Themen 19
K Object nach Vector konvertieren Allgemeine Java-Themen 3
Z ResultSet in Array oder Vector schreiben! Allgemeine Java-Themen 2
C vector von vector sortieren Allgemeine Java-Themen 4
D Vector in String Allgemeine Java-Themen 5
J Von Collection zu vector Allgemeine Java-Themen 5
D Vector in Datei schreiben Allgemeine Java-Themen 18
I Vector serialisieren: StackOverflow Allgemeine Java-Themen 13
H Vector in ein File-Array umwandeln Allgemeine Java-Themen 2
J User Klasse in den Vector, Object Klasse wieder raus... Allgemeine Java-Themen 4
K vector, synchronized und mehrere methoden Allgemeine Java-Themen 3
J Clear-Problem Allgemeine Java-Themen 10
C JTextArea clear! Allgemeine Java-Themen 4
L doppelt gelinkte liste /getFirst/removeFirst/clear/Remove Allgemeine Java-Themen 2
A Variable in if initialisieren Allgemeine Java-Themen 23
F Konstante an main - Argumenten initialisieren Allgemeine Java-Themen 1
T OOP Objekte mit Erweiterung Initialisieren Allgemeine Java-Themen 6
R Konstanten initialisieren - FRAGE Allgemeine Java-Themen 3
C Statisches Array mit Methode initialisieren Allgemeine Java-Themen 4
T Array mit this initialisieren Allgemeine Java-Themen 18
K Java Konstruktoren beim Initialisieren aufrufen Allgemeine Java-Themen 10
kodela Array mit Points initialisieren Allgemeine Java-Themen 6
I Konstanten bei Erzeugung eines Objekts initialisieren Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben