Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Mic Mini 2: audio 48 kHz / 24-bit e protocollo OsmoAudio sotto i 100 Euro
DJI Mic Mini 2: audio 48 kHz / 24-bit e protocollo OsmoAudio sotto i 100 Euro
DJI presenta Mic Mini 2, un sistema microfonico wireless ultra-compatto progettato per democratizzare l'audio di alta qualità nella fascia entry-level. Con un peso di soli 11 grammi per il trasmettitore elimina i fastidi tipici dei modelli più pesanti sui vestiti. Nonostante la miniaturizzazione Mic Mini 2 offre prestazioni tecniche di rilievo: registrazione omnidirezionale a 48 kHz/24-bit, tre preset vocali (Regular, Bright, Rich) e un sistema di cancellazione attiva del rumore a due livelli.
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Motorola propone in fascia media il nuovo Moto G77 5G, uno smartphone che punta sul display AMOLED da 1.5K a 120Hz, e sulla fotocamera da 108 MP con stabilizzazione ottica per affrontare la fascia media. Il tutto insieme a una batteria da 5200mAh in soli 7,3 millimetri di spessore, con una scocca certificata con standard militari
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI ha appena ufficializzato la serie Lito, la sua nuova gamma di droni entry-level destinata a chi si avvicina per la prima volta alla fotografia aerea. Al centro dell'annuncio ci sono due modelli ben distinti per fascia di prezzo e specifiche tecniche: DJI Lito 1 e DJI Lito X1. Entrambi si collocano sotto la soglia regolamentare dei 249 grammi, che permette di volare con requisiti burocratici più semplici rispetto ai droni più pesanti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-11-2009, 15: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, 16: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, 16: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, 19: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, 09: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 09:20.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Mic Mini 2: audio 48 kHz / 24-bit e protocollo OsmoAudio sotto i 100 Euro DJI Mic Mini 2: audio 48 kHz / 24-bit e protocol...
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico Recensione Moto G77: display AMOLED e buona auto...
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla DJI Lito 1 e Lito X1 recensione: i nuovi droni p...
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi Sony World Photography Awards 2026: i premiati, ...
Una settimana con Hyundai Ioniq 5 N-Line: diverte e convince Una settimana con Hyundai Ioniq 5 N-Line: divert...
I nuovi processori Intel Wildcat Lake so...
La dashcam 70mai A800SE a 109€ registra ...
The Blood of Dawnwalker: il sistema dei ...
Numeri a tre cifre contro le truffe tele...
Fine di un'era nel gaming PC: Denuvo &eg...
Hisense Smart TV serie U72Q in super sco...
OnePlus punta sul gaming: ecco il nuovo ...
Scope elettriche Tineco e Dreame: lavano...
Resident Evil Requiem: ecco cosa preferi...
iPhone Ultra: il primo pieghevole di App...
Hisense taglia i prezzi anche dei QLED: ...
MediaTek aggiorna la gamma di SoC: due n...
I biglietti di Trenord arrivano anche su...
GPU, addio GALAX: la casa madre Palit as...
Redmi Note 15 Pro 5G 8GB/256GB da 349€ s...
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: 09:02.


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