| |||||
| Dernière réponse | |
|---|---|
| Sujet : [JAVA] File d'attente... | |
| benou | bon, la première vresion que j'ai donnée était pas terrible : déjà, elle marchait pas bien pour certaines méthodes et puis j'avais utilisée une variable full inutile.
Comme quoi, faut pas faire de la programmation pendant qu'on regarde un épisode d'Urgence ;) voilà la v2, qui marche, qui est extensible, et qui a été faite apres urgence : public class File { protected Object[] tab; protected int begin, end; protected File ext; public File () { this(10); } public File (int initialCapacity) { tab = new Object[initialCapacity]; begin = 0; end = 0; } public void put(Object o) { if (tab[end]!=null) { if (ext == null) ext = new File((tab.length==0)?10:tab.length*2); ext.put(o); } else { tab[end] = o; end = (end+1)%tab.length; } } public boolean empty() { return tab[begin]==null; } public boolean full() { return tab[end]!=null; } public Object get() { if (empty()) throw new Error("File empty " ); Object o = tab[begin]; if ((ext != null) && (! ext.empty())) { tab[begin]=ext.get(); begin = (begin+1)%tab.length; end = (end+1)%tab.length; } else { tab[begin]=null; begin = (begin+1)%tab.length; } return o; } public int size() { int res = (ext==null)?0:ext.size(); if ((begin<=end) && (!full())) res+= end - begin; else res+= (tab.length - begin) + end; return res; } } |
| Vue Rapide de la discussion |
|---|