# Suche schnellen Container Typ Queue



## Samuel (1. Dez 2007)

Ich nutze im Moment die LinkedListed als Queue, der Haken bei dem Ding ist, dass es zu langsam ist um Objekte rein und rauszuholen.

Ich brauche einen Container der mir den ältesten Eintrag rausholen kann (FIFO), als auch recht zügig elemente an bestimmten indezes löschen können.
Wobei allerdings der Index immer weiterlaufen soll, also wenn ich Id 4 gelöscht habe, so soll der nächste push die Id 5 haben


----------



## WieselAc (1. Dez 2007)

Ich befürchte so etwas spezielles ist bei Java nicht on Board. Das heißt ich fürchte selber machen.


----------



## Guest (1. Dez 2007)

Was meinst du mit "Id"? Index? wenn ja, dann was soll passieren, wenn du versuchst gelöschte Einträge zu lesen?


----------



## Samuel (1. Dez 2007)

ID is der Index ja.

Naja, was passiert denn wenn man bei einem Vector das 31. von 30 Elementen lesen will?


----------



## maki (1. Dez 2007)

Leite von AbstractList oder einer anderen Container Klasse ab und schreibe deine eigene spezielle Implementierung.
Ich finde die Anforderung zwar etwas komisch, aber ich muss ja nicht alles verstehen.


----------



## Samuel (1. Dez 2007)

Werd ich wohl machen.
Die Anforderung resultiert aus Geschwindigkeitsoptimierungen, da kommen solche Konstrukte wohl öfters vor


----------



## maki (1. Dez 2007)

Samuel hat gesagt.:
			
		

> ...
> Die Anforderung resultiert aus Geschwindigkeitsoptimierungen, da kommen solche Konstrukte wohl öfters vor


Nun, in so einem Falle würde ihc mir überlegen, ob es nicht einfachere Möglichkeiten gibt.

remove(index) hat bestimmte implikationen


> Operations that index into the list will traverse the list from the begining or the end, whichever is closer to the specified index.


Anders gesagt: Langsam!

Versuche es doch mal mit einer ArrayList, bevor du anfängst deine eigenen Klassen zu schreiben 
Einträge die gelöscht sind, könnten ja auch als null dargestellt werden.


----------



## DocRandom (1. Dez 2007)

Hi, also ich verwende die LinkedList als FIFO-Queue und habe aber keine Geschwindigkeitsprobleme.
Hier mein einfacher Code:

```
import java.util.LinkedList;
import java.util.Queue;

public class FifoQueue<T> {

	private Queue<T> queue;
	
	public FifoQueue() {
		queue = new LinkedList<T>();
	}
	public synchronized void addElement( T o ) {
		queue.add( o );
		notify();
	}
	public synchronized T getElement() {
		T o = null;
		if(!queue.isEmpty())
			o = queue.poll();
		
		notify();
		return o;
	}
	public int getCount() {

		return queue.size();
	}
}
```

lg
DocRandom


----------

