Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-08-2006, 11:06   #1
aduri
Member
 
Iscritto dal: Nov 2005
Città: Genova
Messaggi: 75
(Java) Problema uso compareTo()

Salve a tutti,

Il testo del problema posto dal prof. e' il seguente:

2. Sviluppare una classe Process che descriva un processo. Definire tre campi: un intero che
identifica il processo (pid), una stringa per il nome del processo e un intero per
l’occupazione di memoria. Definire il costruttore della classe e il metodo toString().
Implementare l’interfaccia Comparable: il confronto è fatto sulla memoria utilizzata.

Io ho sviluppato questo codice che mi da errore quando uso compareTo().
Mi ci sto picchiando da parecchio ma non riesco a capire dove sbaglio.

Codice:
import java.util.*;
import java.lang.*;

class Process implements Comparable
{
int pid;
String nome;
int memoria;

public Process(int pid, String nome, int memoria) //costruttore
{
this.pid= pid; 
this.nome = nome;
this.memoria = memoria;
}

public void StampaDettagli()
{
System.out.println("Processo "+pid+" Nome " + nome + " Memoria " + memoria);
}
public String toString()
{
return nome + " " + pid+" "+memoria;
}
public int compareTo(Object o){
Process tmp = (Process) o;
return memoria.compareTo(tmp.memoria);
}
// private int pid;
// private String nome;
// private int memoria;
}


public class UsoProcess
{
public static void main(String args[])
{
Process[] proc = new Process[3];

proc[0] = new Process(2,"integer", 1500);
proc[1] = new Process(6,"calc", 2500);
proc[2] = new Process(4,"sum", 2500);

System.out.println("===================");
System.out.println("Situazione processi");
System.out.println(" ");

for (int i = 0; i < 3; i++)
{
proc[i].StampaDettagli();
}

System.out.println(" ");
System.out.println(" ");
System.out.println(" ");
}
}
Grazie per l'aiuto
aduri è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2006, 11:21   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da aduri
Io ho sviluppato questo codice che mi da errore quando uso compareTo().
memoria è di tipo int ... non un oggetto, non ha metodi!!

return memoria > tmp.memoria ? +1 : memoria < tmp.memoria ? -1 : 0;
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2006, 13:10   #3
aduri
Member
 
Iscritto dal: Nov 2005
Città: Genova
Messaggi: 75
Grazie,
mi sei stato di grande aiuto.

Come al solito.
aduri è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2006, 13:35   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da aduri
Grazie,
Prego.

Ma ... il codice sopra è ancora incompleto, vero?? Perché non mi sembra che compareTo venga usato.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2006, 17:15   #5
aduri
Member
 
Iscritto dal: Nov 2005
Città: Genova
Messaggi: 75
Dal testo del professore non riesco bene ad interpretare quello che vuole.
Dice pero' che il confronto va fatto sulla memoria e nell'esercizio successivo
fa diverse richieste che ancora non ho capito come impostare.
E' l'ultimo esercizio ma, per le mie scarse capacita', il piu' complicato.

Ho anche implementato con successo (dopo parecchi rifacimenti) una classe SortLinkedList che allego per completezza e che deve essere richiamata .

Codice:
import java.util.*;
public class SortedLinkedList extends LinkedList
{
private static int elementi;
public static void main ( String []args )
    {
       if(args.length > 0)
          elementi = Integer.parseInt(args[0]);
       else
         elementi = 21;
         System.out.println( "Prova su " + elementi + "elementi." );
         SortedLinkedList l = new SortedLinkedList();
         // riempi la lista di numeri a caso tra -30 e +30
          ListIterator it_aggiunta = l.listIterator();
   Random generatore=new Random();
       for ( int i = 0; i < elementi; i++ )
       {
   int segno=generatore.nextInt(2);// 0 o 1
   int n=generatore.nextInt(31);
   if(segno==0)
   l.add(new Integer(- n ));
   else
   l.add(new Integer(n));
       }
       // stampa tutti i valori
       System.out.println( "Collezione completa:" );
       stampaCollezione( l );
       }
    private static void stampaCollezione
                                   ( Collection c )
    {
       Iterator i = c.iterator();
       while ( i.hasNext() )
       {
          System.out.println( i.next() );
       }
    }
    @Override
 public boolean add(Object o){
  Comparable c=(Comparable)o;//bisogna usare il cast a Comparable
  ListIterator it=listIterator();
  Comparable c2=null;
  if(it.hasNext())
   c2=(Comparable)it.next();
  else{
   it.add(c);
   return true;
  }
  while(it.hasNext() && c2.compareTo(c)>0) //<0 x ordine crescente
     c2=(Comparable)it.next();
  //uscito dal while ho raggiunto la posizione di inserimento perchè il compareTo() non da più <0
  //ora posso usare per inserire in questa posizione il metodo add di ListIterator ma bisognerebbe
  //tornare indietro di una posizione per essere sicuri che l'inserimento sia in ordine se il compareTo() >0
  if(c2.compareTo(c)<0)//>0 x ordine crescente
  it.previous();
  it.add(c);
  return true;
 }
}
Il testo originale del prof. x l'ultimo es. e' mil seguente:

3. Scrivere una classe (che contiene il main()) in cui creare un oggetto di tipo
SortedLinkedList, lista di oggetti Process. La sequenza di processi “in ingresso al sistema” è contenuta nel file processes.txt: ogni riga contiene i dati di un processo, cioè il pid, il nome e la memoria occupata. Eseguire le seguenti operazioni:
• Leggere una riga del file ed inserire il processo nella lista.
• Se la quantità di memoria utilizzata da tutti i processi supera un valore di soglia
(100000) eliminare dalla lista il processo che in quel momento occupa più memoria
(utilizzare gli iteratori, oggetti Iterator).
• Salvare su file il numero di processi presenti nel sistema e la quantità di memoria
utilizzata da tutti i processi in ogni istante (“ad ogni lettura di una riga”).
Fare i grafici dell’occupazione di memoria e del numero di processi (in ogni istante).
Commentare.
Valutare il costo computazionale per mantenere la lista ordinata e per eliminare il processo
che occupa più memoria.

Scusa per la lungaggine
aduri è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2006, 18:06   #6
Andrea16v
Senior Member
 
L'Avatar di Andrea16v
 
Iscritto dal: Mar 2003
Messaggi: 3852
Quote:
Originariamente inviato da andbin
memoria è di tipo int ... non un oggetto, non ha metodi!!

return memoria > tmp.memoria ? +1 : memoria < tmp.memoria ? -1 : 0;
Non avevo mai visto in un compareTo() un'implementazione con l'uso di ":" e "?". E' un'abbreviazione del classico

if (...) return +1;
else if (...) return -1;
...


?
__________________
Cerco fotocamera con buono zoom!! CLICCA!
° Moderatore del Forum Ufficiale di ElaborarE (responsabile sezione HI-FI e Car Audio) °
Andrea16v è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2006, 19:30   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Il codice equivalente è questo:

if (memoria > tmp.memoria) return +1;
else if (memoria < tmp.memoria) return -1;
else return 0;

Ultima modifica di cionci : 25-08-2006 alle 00:50.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2006, 00:23   #8
Andrea16v
Senior Member
 
L'Avatar di Andrea16v
 
Iscritto dal: Mar 2003
Messaggi: 3852
Quote:
Originariamente inviato da cionci
Il codice equivalente è questo:

if (memoria > tmp.memoria) return +1;
else if (memoria > tmp.memoria) return -1;
else return 0;
Avevo immaginato bene...
Abbreviare questa operazione è una gran cosa, anche perchè è un metodo molto frequente, ma ci sono motivi particolari per l'adozione di questi comandi (":" e "?") come abbreviazione?
__________________
Cerco fotocamera con buono zoom!! CLICCA!
° Moderatore del Forum Ufficiale di ElaborarE (responsabile sezione HI-FI e Car Audio) °
Andrea16v è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2006, 00:50   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
No, non ce n'è alcuno, ma a volte fa davvero comodo...

Concatenare più volte l'operatore ternario non mi piace molto, ma a volte mi piace molto usarlo...

Ad esempio in questi casi è perfetto e secondo me leggibilissimo:

if(a == b) return 1;
else return 0;

che si sostituisce con:

return (a == b) ? 1 : 0;

Oppure:

if(a == c) b = 1;
else b = 0;

che si sostituisce con:

b = (a == c) ? 1 : 0;
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2006, 01:05   #10
Andrea16v
Senior Member
 
L'Avatar di Andrea16v
 
Iscritto dal: Mar 2003
Messaggi: 3852
Questi ultimi li trovo un po' ostici da digerire, me li segno così se li dovessi incocciare da qualche parte me li vengo a vedere, bisogna un po' calarsi nel ruolo per saperli riconoscere senza appunti davanti..
Se invece dico, per esempio con una lista parcheggio di oggetti automobile:
Codice:
List<Automobile> multati = new ArrayList<Automobile>();
for (Automobile a : parcheggio) {
  if (biglietto scaduto) {
      multati.add(a);
  }
}
Il comando (Automobile a : parcheggio) è un'abbreviazione per la scansione di tutta la struttura dati con un iteratore e clausola hasNext() ?
__________________
Cerco fotocamera con buono zoom!! CLICCA!
° Moderatore del Forum Ufficiale di ElaborarE (responsabile sezione HI-FI e Car Audio) °
Andrea16v è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2006, 01:48   #11
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
E' come se fai:
Codice:
for(int i=0;i<parcheggio.size();i++){
       if(bigliettoScaduto) multati.add(parcheggio.get(i));
}
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2006, 10:38   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Andrea16v
Il comando (Automobile a : parcheggio) è un'abbreviazione per la scansione di tutta la struttura dati con un iteratore e clausola hasNext() ?
Hai mai visto php ? Quello è il classico comando foreach...in pratica per ognuno degli elementi di parcheggio esegui il blocco... Per ogni iterazione in "a" va a finire un elemento di parcheggio... E' una caratteristica di Java 1.5...
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
SpaceX: un satellite ha fotografato il s...
36 idee regalo con offerte Amazon sotto ...
Sony assume il controllo dei Peanuts: Sn...
DJI Neo scende a 149€ su Amazon, in vers...
Scoperto un nuovo esopianeta che orbita ...
Blue Origin NS-37: successo per la missi...
Potrebbe essere stata rilevata una super...
La cometa interstellare 3I/ATLAS è...
Xiaomi 17 Ultra: l'autonomia non sarà un...
Il processo produttivo a 2 nm di TSMC è ...
L'atteso aggiornamento dei driver della ...
The Elder Scrolls VI nel 2029 e Fallout ...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:17.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v