Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
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
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-11-2009, 16:58   #1
Boomhauer88888
Junior Member
 
Iscritto dal: Nov 2009
Messaggi: 2
[JAVA] Problema controllo duplicazione in lista

E un problema lungo da spiegare..ma in poche parole devo cercare duplicati di una lista all'interno dell'oggetto di cui è composta la lista..
se poi serve spiego meglio..magari posto il codice
aiutooo :o:
Boomhauer88888 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2009, 17:14   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Non ho capito molto:
Tu hai una lista e devi trovare tutti gli oggetti duplicati che essa potrebbe contenere?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2009, 17:23   #3
Boomhauer88888
Junior Member
 
Iscritto dal: Nov 2009
Messaggi: 2
Ti posto un pezzo di codice:
La lista è creata nella classe offertaformativa:
public class OffertaFormativa {

private List<Corso> corsi=new ArrayList<Corso>();<---questa
private List<Docente> docenti=new ArrayList <Docente>();
private Corso c;
private int numdocenti;
private int oretot;


public Corso creaCorso(String nome, String descrizione){
c=new Corso(nome,descrizione);
corsi.add(c);
return c;
}ecc..

e io nella classe corso ho un metodo in cui devo cercare se ci sono duplicati in tutti i corsi:

public class Corso implements Comparable<Corso> {
private String nome;
private String descrizione;
public OffertaFormativa o=new OffertaFormativa();
private Map<String,Insegnamento> insegnamenti=new HashMap<String,Insegnamento>();

public Corso(String nome, String descrizione) {
this.nome=nome;
this.descrizione=descrizione;
}

public String getNome(){
return nome;
}

public String getDescrizione(){
return descrizione;
}


public Insegnamento nuovoInsegnamento(String codice, String nome, int crediti)
throws CodiceInsegnamentoDuplicato{
if(insegnamenti.containsKey(codice)) throw new CodiceInsegnamentoDuplicato();

for(Corso c:o.getCorsi()){
if(c.insegnamenti.containsKey(codice))throw new CodiceInsegnamentoDuplicato();
<--- ho provato cosi ma non funziona
}
Insegnamento i=new Insegnamento(codice,nome,crediti);
insegnamenti.put(codice, i);
return i;
}
Boomhauer88888 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2009, 20:55   #4
Mesh89
Member
 
Iscritto dal: Dec 2006
Messaggi: 198
Allora, innanzi tutto per favore edita il post e racchiudi il codice tra i tag CODE, perchè così non si capisce veramente nulla.

Secondo, che vuol dire "non funziona"? Non compila? Non trova ciò che dovrebbe trovare? Trova ciò che non dovrebbe trovare?
Mesh89 è offline   Rispondi citando il messaggio o parte di esso
Old 06-11-2009, 10:17   #5
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Ragioniamo, un attimo.
Riepilogo la situazione: tu hai che un Corso è così definito: ha un nome, una descrizione, una relazione con l'offerta formativa di riferimento, e una collezione di insegnamenti.
Codice:
class Corso
{
    nome: String
    descrizione: String
    o : OffertaFormativa
    inegnamenti: Map<String,Insegnamento>
}
Poi abbiamo che una offerta formativa è, mi par di capire, definita come una collezione di corsi e una collezione di docenti (gli altri membri, a naso, non mi sembra siano caratterizzanti: ad esempio "numerodocenti" non è neccessario, dato che questa info è implicitamente contenuta nella collezione di docenti, e quindi basta restituire il numero di docenti presenti con il metodo size()).
Codice:
class OffertaFormativa 
{
    // membri caratterizzanti:
    corsi: List<Corso>
    docenti: List<Docente>
    // membri non caratterizzanti, credo:
    c: Corso
    numerodocenti: int
    oretot: int
}
Notiamo che un insegnamento ha un nome, un codice, e un numero di crediti (almeno è quello che di deduce esaminando la chiamata al costruttore di Insegnamento nel metodo "nuovoInsegnamento"):
Codice:
class Insegnamento
{
    codice: String
    nome: String
    crediti: int
}
Bene.
Esiste ora la necessità di creare e inserire un nuovo Insegnamento tra quelli già presenti, in un qualsiasi Corso.
Non vogliamo però introdurre in un Corso un Insegnamento duplicato.
Si deduce dal tuo post che un Insegnamento è considerato come il duplicato di un altro se hanno lo stesso codice, quindi l'identità di un Insegnamento è stabilità dal suo codice.

Analizziamo un po' la sistuazione:
- la classe Corso ha un metodo 'nuovoInsegnamento' che crea un nuovo oggetto Insegnamento e lo inserisce nella sua collezione di Insegnamenti, se i dati inseriti per il nuovo Insegnamento non definiscono un duplicato.
Inoltre il metodo restituisce al chiamante un l'Insegnamento appena creato: se però si sta definendo un duplicato, cosa dovrebbe restituire? Potrebbe restituire un riferimento nullo: in tal modo il chiamante può sapere se l'operazione è andata a buon fine o meno.

- la collezione di appoggio per gli Insegnamenti è una Map e la chiave è il codice dell'Insegnamento.

Potresti definire il tuo metodo così:
Codice:
// in class Corso...
public Insegnamento nuovoInsegnamento(String codice, String nome, int crediti) {
    Insegnamento nuovo = null;
    if (! insegnamenti.containsKey(codice)) {
        nuovo = new Insegnamento(codice,nome,crediti);
        insegnamenti.put(codice, nuovo);
    }
    return nuovo;
}
Nota che appoggiandoti al metodo containsKey di Map, ed essendo le tue key di tipo String, il metodo per discriminare se un codice è uguale ad un altro (e quindi se una chiave è già presente nella mappa) è il metodo String.equals.
Questo implica che questi due codici risultano diversi: "GH2347" e "gH2347".

Nota che nel metodo non occorre lanciare alcuna eccezione: se la chiave è già presente è sufficiente restituire null al chiamante.

Se invece vuoi lanciare un'eccezione, puoi farlo, ma se l'eccezione che hai definito è una unchecked exception e il chiamante la ignora (non fa il try-catch) l'eccezione viene propagata (e se nessuno la intercetta arriva al "livello" del main, ma non impedisce alla tua applicazione di continuare a girare).
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 06-11-2009 alle 10:20.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
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 ...
La capsula SpaceX Dragon CRS-33 ha acces...
La NASA è sempre più vicin...
Crisi delle memorie: ASUS torna al passa...
Le console next-generation potrebbero es...
Gemini cresce ancora: la quota di mercat...
Samsung sfida TSMC: la capacità produtti...
Iliad alza il prezzo della fibra ottica ...
Il prossimo low cost di POCO sarà il più...
The Elder Scrolls VI: ecco le ultime sul...
Ecco i saldi di fine anno Amazon, 34 off...
iPhone Fold: scorte limitate al lancio m...
OpenAI porterà la pubblicità in ChatGPT ...
TSMC aumenterà ancora i prezzi: nel 2026...
Marvel pubblica anche il secondo teaser ...
Nuovo accordo tra xAI e il Pentagono: l'...
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: 01:52.


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