|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Nov 2005
Città: Genova
Messaggi: 75
|
Problema uso iteratori
Salve a tutti.
Il programma compila fino all'ordinamento della lista in ordine crescente ma non rimuove l'ultimo record. Non ho ancora implementato il controllo sulla somma di memoria che dovrebbe cancellare il processo che occupa piu' memoria quando la somma della memoria supera 100000. Qualcuno mi puo' dare una dritta? ecco il codice A presto Codice: import java.util.*; import java.io.*; import javax.swing.JOptionPane;//utility pannello di dialogo class MyFile { public int memoria; public int pid; public String nome; MyFile (String linea) { String aTmp[] = linea.split("\t"); this.memoria = Integer.parseInt(aTmp[2]); this.nome = aTmp[1]; this.pid = Integer.parseInt(aTmp[0]); } MyFile (int memoria, String nome) { this.pid = pid; this.memoria = memoria; this.nome = nome; } public static void main(String[] args) throws IOException { Keymemoria keymemoria = new Keymemoria(); // KeyNome keyNome = new KeyNome(); Vector v = new Vector();// creo Vector (array dinamico) // Carico file da processes.txt //String nomeFile=JOptionPane.showInputDialog("Digita il nome del file da leggere"); String nomeFile="processes.txt"; //altro modo di input file diretto da codice BufferedReader fileLettura; try { fileLettura = new BufferedReader(new FileReader(nomeFile)); while(true) { String linea = fileLettura.readLine(); if(linea==null) { break; } else { v.add( new MyFile(linea) ); } } } catch(FileNotFoundException e) {// gestisco le eccezioni System.out.println("Il file "+nomeFile + " non esiste o non puo' essere aperto"); } catch(IOException e) { System.out.println("errore di lettura "+e); } MyFile[] a = new MyFile[v.size()]; for( int i = 0; i < v.size(); i++ ) { a[i] = (MyFile)v.get(i); } System.out.println ("------------------"); System.out.println ("Array non ordinato: "); System.out.println ("pid nome memoria"); for (int k = 0; k < a.length; k++) { System.out.println (a[k].pid + " " + a[k].nome+ " " + a[k].memoria); } System.out.println ("------------------"); System.out.println ("Array ordinato rispetto alla dimensione della memoria: "); System.out.println ("pid nome memoria"); Arrays.sort (a, keymemoria); for (int k = 0; k < a.length; k++) { System.out.println (a[k].pid + " " + a[k].nome+ " " + a[k].memoria); } System.out.println ("------------------"); //Implemento la ricerca binaria per dimensione System.out.println (""); } } class Keymemoria implements Comparator { public int compare (Object MyFile1, Object MyFile2) { int memoria1 = ((MyFile) MyFile1).memoria; int memoria2 = ((MyFile) MyFile2).memoria; return (memoria1 < memoria2 ? -1 : (memoria1 == memoria2 ? 0 : 1)); } } public class ScanDeleteLast { SortedLinkedList l = new SortedLinkedList(); ListIterator it = l.listIterator(); for ( int i = 0; i < l.lenght; i++ ) { while(it.hasNext()) { String item = (String) l.next(); } // toglie l’ultimo elemento traversato it.remove(); // rimuove record con memoria maggiore } } Questo e' uno stralcio del file di teto processes.txt 1 init 272 2 migratio 0 3 ksoftirq 0 4 watchdog 0 5 migratio 0 6 ksoftirq 0 7 watchdog 0 8 events/0 0 9 events/1 0 10 khelper 0 11 kthread 0 14 kacpid 0 104 kblockd/ 0 105 kblockd/ 0 108 khubd 0 162 pdflush 0 163 pdflush 0 165 aio/0 0 164 kswapd0 0 166 aio/1 0 259 kseriod 0 417 ata/0 0 418 ata/1 0 424 scsi_eh_ 0 425 scsi_eh_ 0 446 kjournal 0 999 udevd 240 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:31.