Was sollte ich benutzen Vektor oder ArrayList?

Status
Nicht offen für weitere Antworten.

Blase16

Mitglied
Hallo,

ich brauche eine Liste in der Strings gespeichert werden. Dabei sollte beachtet werden das die die Liste entweder, eine feste Größe haben kann oder unendlich groß sein kann. Wenn die Liste eine Feste Größe hat, dann soll beim überschreiten des Limits der erste Eintrag gelöscht werden, der komplette Inhalt rutscht nach links und rechts wird wieder eingefügt. Auf die Liste soll nicht nur per index zugegriffen werden, sie soll auch nach dem Value durchsucht werden. Was sollte ich benutzen? Was ist von der Perfomance besser?

Ich habe momentan die Klasse Vektor genommen und erweitert:
Code:
package de.blase16.jajbof.src;

import java.text.DateFormat;
import java.util.Calendar;
import java.util.Collection;
import java.util.Vector;

public class History extends Vector {

    private int initialCapacity;
    private long lastUsedTime;
    private boolean limited;

    public History() {
	super();
	limited = false;
    }

    public History(int arg0) {
	super(arg0);
	limited = true;
	initialCapacity = arg0;
    }

    public void addMessage(String msg) {
	if (limited && elementCount == initialCapacity) {
		removeElementAt(0);
	}
	addElement(msg);
	lastUsedTime = System.currentTimeMillis();
    }

    public long lastUsed() {
	return lastUsedTime;
    }
}

Die Funktion addMessage wird benutzt um neue Elemte hinzufügen.

Gruß
Blase16
 
Wenn du vorne löschst, sind alle Listen die auf einem Array basieren ungeeignet. Eine LinkedList (bzw. eine Queue) wäre besser.
 
Ja aber das Problem ist doch, dass ich per Index auf die Strings zugreifen muss und das dauert doch sehr lange in einer LinkedList.
 
Was geschieht denn öfters? Wenn du oft schreibst -> LinkedList. Wenn du die ganze Zeit liest -> ArrayList.

Vergiss nicht, dass wenn du den ersten Eintrag löschst, alle anderen Einträge kopiert werden müssen.
 
Was soll denn dabei rauskommen, wenn Du nach dem Wert suchst?

Ich würde eine ArrayList<String> anlegen, wo die Strings reinkommen, und eine HashMap<String,Integer>, die den Index auf diesen String in der Liste als Wert enthält.

Wobei mir noch nicht ganz klar ist, wozu man das braucht, was ich gerade geschrieben habe. *g*

MfG
Ark
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben