Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Siamo tornati nel parco tecnologico di Trieste per il kick-off del programma che mette a disposizione di cinque startup le infrastrutture di ricerca, dal sincrotrone Elettra ai laboratori di genomica e HPC. Roberto Pillon racconta il modello e la visione
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16-ak0001nl combina RTX 5080 Laptop e Ryzen AI 9 HX 375 in un desktop replacement potente e ben raffreddato, con display 240 Hz e dotazione completa. Autonomia limitata e calibrazione non perfetta frenano l'entusiasmo, ma a 2.609 euro è tra le proposte più interessanti della categoria.
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
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


Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Prezzi aumentati del 50% durante la nott...
Sconti studiati per singolo utente: Sony...
Addio alla Kia Niro EV, il crossover sar...
Apple crede nel suo iPhone Fold: la prod...
Fortnite, un nuovo listino per i pacchet...
Ecco i nuovi Sonos Play ed Era 100 SL: d...
Razer svela il futuro del gaming potenzi...
Tre robot Narwal in offerta: pulizia aut...
Gracenote denuncia OpenAI: ChatGPT addes...
Microsoft AI Tour Milano: dall'efficienz...
Asus ExpertBook Ultra: Intel Core Ultra ...
Intel presenta i processori desktop Core...
Un'AI ha trovato una falla critica in Wi...
OPPO Find N6 rivoluziona i foldable: add...
Enel, completata l'installazione di tutt...
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: 19:06.


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