PDA

View Full Version : Ordinamento di un ArrayList


Albsss
28-11-2012, 22:10
Salve a tutti...sono nuovo nel forum!!:D Ho deciso di iscrivermi a questo forum perchè o vedo molto serio e completo di tutto e spero che possa risolvere anche qualche mio problema...:help:
allora io ho fatto un programmino banale in java la cui traccia è:
un file denominato "auto" contiene le informazioni sulle auto disponibili in una concessionaria di auto usate. Ogni auto è rappresentata dalle seguenti informazioni:
costruttore
modello
cilindrata
alimentazione
anno di prima immatricolazione
costo
Scrivere un programma per l'ordinamento del file rispetto all'anno di prima immatricolazione.
Ora io ho creato le tre classi (Auto,Gestore e Tester) come di seguito:

CLASSE AUTO:
import java.io.PrintStream;
import java.util.Scanner;


public class Auto implements Comparable<Auto>{
public Auto(String costruttore,String modello,int cilindrata,String alimentazione,String annoImm,int costo){
this.costruttore = costruttore;
this.modello = modello;
this.cilindrata = cilindrata;
this.alimentazione = alimentazione;
this.annoImm = annoImm;
this.costo = costo;
}
public String getCostruttore() {
return costruttore;
}
public void setCostruttore(String costruttore) {
this.costruttore = costruttore;
}
public String getModello() {
return modello;
}
public void setModello(String modello) {
this.modello = modello;
}
public String getAlimentazione() {
return alimentazione;
}
public void setAlimentazione(String alimentazione) {
this.alimentazione = alimentazione;
}
public int getCilindrata() {
return cilindrata;
}
public void setCilindrata(int cilindrata) {
this.cilindrata = cilindrata;
}
public String getAnnoImm() {
return annoImm;
}
public void setAnnoImm(String annoImm) {
this.annoImm = annoImm;
}
public int getCosto() {
return costo;
}
public void setCosto(int costo) {
this.costo = costo;
}


public static Auto read(Scanner sc){
if(!sc.hasNext())return null;
String costruttore = sc.nextLine();
if(!sc.hasNext())return null;
String modello = sc.nextLine();
if(!sc.hasNext())return null;
String cilindrata = sc.nextLine();
if(!sc.hasNext())return null;
String alimentazione = sc.nextLine();
if(!sc.hasNext())return null;
String annoImm = sc.nextLine();
if(!sc.hasNext())return null;
String costo = sc.nextLine();

return new Auto(costruttore,modello,Integer.parseInt(cilindrata),alimentazione,annoImm,Integer.parseInt(costo));
}


@Override
public String toString() {
return "Auto [costruttore=" + costruttore + ", modello=" + modello
+ ", alimentazione=" + alimentazione + ", annoImm=" + annoImm
+ ", cilindrata=" + cilindrata + ", costo=" + costo + "]";
}


public void print(PrintStream ps){
ps.println(costruttore);
ps.println(modello);
ps.println(cilindrata);
ps.println(alimentazione);
ps.println(annoImm);
ps.println(costo);
}


public int compareTo(Auto a) {
return annoImm.compareTo(a.getAnnoImm());
}


private String costruttore,modello,alimentazione,annoImm;
private int cilindrata,costo;
}

GESTORE:
import java.io.PrintStream;
import java.util.*;


public class Gestore {
public Gestore(Scanner aut){
ArrayList<Auto> auto = new ArrayList<Auto>();
Auto a = Auto.read(aut);
while(a != null){
auto.add(a);
a = Auto.read(aut);
}
}

public void printConcessionaria(PrintStream ps){
ps.println("CONCESSIONARIA");
for(Auto a : auto){
a.print(ps);
ps.println(" ---- ");
}
}
public void rAnnoImm(PrintStream ps){
ps.println("immettere anno di immatricolazione: ");
Scanner i = new Scanner(System.in);
String s = i.nextLine();
for(Auto a : auto){
if(a.getAnnoImm().equalsIgnoreCase(s)){
ps.println(a.toString());
}
}
}
private ArrayList<Auto>auto;
}

TESTER:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.Scanner;


public class Tester {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean uscita = true;
PrintStream ps = new PrintStream(System.out);
Scanner in = null;
Scanner aut = null;

try{
aut = new Scanner(new File("Auto.txt"));
}
catch(FileNotFoundException e){
ps.println("FILE NON TROVATO");
}
Gestore g = new Gestore(aut);
in = new Scanner(System.in);
while(uscita){
menu(ps);
int n = in.nextInt();
if(n < 1 || n > 2){
ps.println("errore");
}
switch(n){
case 1 : g.rAnnoImm(ps);
case 2 : uscita = false;
}
}
}
public static void menu(PrintStream ps){
ps.println("Ricerca");
ps.println("1) Anno di prima immatricolazione: ");
ps.println("2) Uscire dal programma");
}
}
ora non so come procedere con l'ordinamento del file....ho provato con il collections.sort ma non riesco nell'intento...spero qualcuno possa aiutarmi...grazie

mone.java
29-11-2012, 13:57
Quali file devi ordinare? Cmq se intendi ordinare le auto dentro al Gestore devi fare ciò:


public class Gestore {
public Gestore(Scanner aut){
ArrayList<Auto> auto = new ArrayList<Auto>();
Auto a = Auto.read(aut);
while(a != null){
auto.add(a);
a = Auto.read(aut);
}
Collections.sort(auto);
}
.........


ma una volta non erano obbligatori i tag per indicare il linguaggio?

banryu79
30-11-2012, 07:58
ma una volta non erano obbligatori i tag per indicare il linguaggio?

Sì, una volta, quando la sezione era costantemente controllata dai moderatori.

mone.java
30-11-2012, 07:59
Sì, una volta, quando la sezione era costantemente controllata dai moderatori.

Significa che sta cadendo in decadenza?? Peccato... :(