Ho un vector di oggetti. Ogni oggetto ha un attributo GregorianCalendar che rappresenta una data, DataInizio. Quello che voglio fare è ordinare gli oggetti del vector in base alla loro dara: dalla data più antica alla più recente.

Il metodo che ho ideato è il seguente:
codice:
	public static Vector<oggetto> ordinaOggetti(Vector<oggetto>e){
		Vector<oggetto>locale=new Vector<oggetto>();
		
		do{
			GregorianCalendar data1=e.get(0).getDataInizio();
			int indice=0;
		
			for(int k=0;k<e.size();k++){
				GregorianCalendar data2=e.get(k).getDataInizio();
				if(data2.compareTo(data1)<0){
					indice=k;
					data1=e.get(k).getDataInizio();
				}
					
			}
			locale.add(e.get(indice));
			e.remove(e.get(indice));
			
		}
			while(e.size()!=0);
			
			return locale;
	}
la mia idea di fondo era quella di creare un nuovo vector di oggetti vuoto. Lavorare sul vector in ingresso (e) e, usando il metodo getDataInizio(che ritorna la data dell'oggetto), confrontare le date e individuare la meno recente. Alla fine del ciclo for, ho l'inidice dell'oggetto con la data meno recente, quindi: aggiungo l'oggetto di posizione indice al nuovo vector e rimuovo dal vector originale l'elemento. Ripeto così il ciclo finché il vector originario non abbia dimensione 0. Poi faccio ritornare il vettore che dovrebbe contenere tutti gli elementi ordinati.

Il mio problema è che invece il vettore ritornato me lo ritrovo sempre di una dimensione e contenente solo l'ultimo oggetto inserito (mediante un metodo, corretto). Cosa c'è che non va?

un altra domanda: la mia idea iniziale era di fare un metodo void che alla fine attribuisse il valore del nuovo Vector all'originale, ormai vuoto:

e=locale;

Ma così facendo mi ritrovavo un Vector di dimensione 0!

Aiuto