Set accetta valori duplicati?
Se proviamo a inserire valori duplicati in un “set”, cosa succederà? Riceviamo qualsiasi errore complice
Quando proviamo a inserire valori duplicati in un “set”, non aggiunge i valori duplicati. Il metodo “Aggiungi” dell’interfaccia set restituisce un valore booleano, indicando se l’elemento è stato aggiunto correttamente o meno. Se proviamo ad aggiungere un valore duplicato, il metodo restituirà false. Questo comportamento è coerente tra diversi linguaggi di programmazione, come Java e Swift.
Come creare un set con elementi duplicati in Swift
In Swift, un set è una raccolta di elementi unici senza duplicati. Tuttavia, è possibile creare un set con elementi duplicati. Quando creiamo un set con elementi duplicati in Swift, la lingua riconosce che i duplicati dovrebbero essere rimossi. Quindi, rimuove automaticamente tutti gli elementi duplicati. Questa funzione rende Swift Set incredibilmente utili per gestire le raccolte di valori unici.
Panoramica
Un set è una raccolta di elementi unici, il che significa che non consente i duplicati. Tuttavia, in alcuni casi, potremmo voler creare un set che contiene elementi duplicati. Swift riconosce automaticamente i duplicati nei set e li rimuove. Questo articolo esplora come creare set con elementi duplicati in Swift e dimostra il comportamento degli insiemi quando vengono aggiunti valori duplicati.
Sintassi
Lascia che setName: imposta<Elemento> = [duplicati]
La sintassi per la creazione di un set con elementi duplicati in Swift è semplice. Basta dichiarare una variabile con il tipo set, seguito dall’operatore di assegnazione e gli elementi racchiusi tra parentesi quadrate. Il tipo di set può essere specificato per limitare ulteriormente gli elementi a un determinato tipo, come int o stringa.
Parametri
- SetName: questo è il nome del set che vogliamo creare.
- Duplicatelements: questi sono gli elementi che vogliamo aggiungere al set. Questi elementi possono essere duplicati.
- Tipo: questo è il tipo di set, come int, stringa, ecc. Specifica il tipo di elementi che possono essere archiviati nel set.
Valore di ritorno
Dopo aver creato un set con elementi duplicati, il valore restituito sarà un set che scarta tutti i duplicati. Swift rimuove automaticamente eventuali elementi duplicati dai set per garantire che rimangono raccolte uniche.
Importa Swift LET LETTERID: Imposta<Int> = [023, 023, 055, 034, 065, 065, 134] Lascia che UserID: imposta<Corda> = ["24SD2", "24SD2", "24SD2", "24SD2"] Lascia che Evenumbers: Set<Int> = [2, 4, 6, 8, 10, 6, 2, 10] Lascia che ISSTUDENTNICE: SET<Bool> = [falso, vero, vero, falso, falso] Lascia che i prezzi: imposta<Doppio> = [24.32, 45.32, 40.00, 1.45, 1.45, 24.32] Lascia che i nomi: imposta<Corda> = ["Theodore", "Theodore", "Ruth", "Chichi", "Amaka", "Theodore"] Stampa (lectureid) Stampa (UserID) Stampa (evenumbers) Stampa (isStudentNice) Stampa (prezzi) Stampa (nomi)
Spiegazione
- Righe 4-9: creiamo set utilizzando il tipo set e specifichiamo i tipi dei loro elementi. Ogni set contiene alcuni elementi duplicati.
- Righe 12-17: stampiamo i set sulla console per osservare il comportamento dei set con duplicati.
- Osserviamo che Swift rimuove automaticamente qualsiasi elemento duplicato dai set.
Programma semplice da dimostrare, cosa succede se aggiungi elementi duplicati a un set.
Possiamo creare set in vari linguaggi di programmazione, non solo Swift. Ad esempio, in Java, possiamo creare set utilizzando la classe Hashset e archiviare diversi tipi di valori. Il programma Java di seguito dimostra come set gestisce elementi duplicati:
Importa Java.util.Hashset; Importa Java.util.Impostato; Classe pubblica CanaddDuplicateValueIset { public static void main (string [] args) { Impostato<Corda> UniqueColours = new HashSet <> (); uniquecolours.Aggiungi ("rosso"); uniquecolours.Aggiungi ("verde"); uniquecolours.Aggiungi ("blu"); uniquecolours.Aggiungi ("blu"); / * Aggiunta di valore duplicato qui, nessun errore del compilatore e codice funziona bene ma non aggiunge valore duplicato */ for (String Color: UniqueColours) { Sistema.fuori.println (color); } } }
Nel programma Java sopra, creiamo un set chiamato UniqueColours usando la classe Hashset. Aggiungiamo colori diversi al set, incluso un valore duplicato “blu”. Il programma non lancia errori di compilazione o runtime. Funziona bene e non memorizza valori duplicati. Quando ripetiamo il set e stampiamo i suoi valori, osserviamo che il valore duplicato “blu” non è presente.
Se proviamo a inserire valori duplicati in a “Impostato”, cosa accadrà? Riceviamo qualsiasi errore complice
Solo non lo fa’T Aggiungi duplicato valori. Booleano aggiungere(E e) – aggiunge il specificato elemento a questa impostato Se non è già presente (operazione opzionale). COME, aggiungere() il metodo restituisce booleano e acceso Aggiunta duplicati tornerà falso. Sotto Giava L’esempio del codice sorgente funziona bene e jvm (java virtual machine) non fa’t lamentarsi.
Come creare un set con elementi duplicati in Swift
Molti candidati sono respinti o di livello negativo a causa delle scarse prestazioni nel colloquio di progettazione del sistema. Distinguere nelle interviste di progettazione del sistema e essere assunto nel 2023 con questo popolare corso gratuito.
Ottieni un corso gratuito
Ottieni un corso gratuito
Panoramica
Un set è una raccolta di elementi unici senza duplicati. Tuttavia, possiamo creare un set con elementi duplicati. Ma la magia è che Swift saprà che gli elementi duplicati dovrebbero essere uno. Quindi, rimuoverà tutti i duplicati.
Sintassi
let setName: set = [duplicatelements]// specificando il tipo di setlet setName: set = [duplicatelements]
Sintassi per la creazione di elementi duplicati di un set
Parametri
- SetName: questo è il nome del set che vogliamo creare.
- Duplicatelements: questo rappresenta gli elementi dei set che sono duplicati.
- Tipo: questo è il tipo di set. Potrebbe essere int, stringa e così via.
Valore di ritorno
Il valore restituito dopo aver creato un set con elementi duplicati sarà un set che scarta tutti i duplicati.
Importa Swift// Crea raccolte set duplicatelet lectureId: set = [023, 023, 055, 034, 065.065, 134]let UserID: set = ["24SD2", "24SD2", "24SD2", "24SD2"]Let evenumbers: set = [2, 4, 6, 8, 10, 6, 2, 10]Let isstudentNice: set = [false, vero, vero, falso, falso]let prezzi: set = [24.32, 45.32, 40.00, 1.45, 1.45, 24.32]let nomi: set = ["Theodore", "Theodore", "Ruth", "Chichi", "Amaka", "Theodore"]// Stampa i set sulla consoleStampa (lectureid)Stampa (UserID)Stampa (evenumbers)Stampa (isStudentNice)Stampa (prezzi)Stampa (nomi)
Creazione di oggetti impostati con elementi duplicati in Swift
Spiegazione
- Righe 4–9: creiamo alcuni set. Ogni set contiene alcuni duplicati.
- Righe 12–17: stampiamo i set sulla console.
- Osserviamo che Swift scarta qualsiasi duplicato.
Se proviamo a inserire valori duplicati in a “Impostato”, cosa accadrà? Riceviamo qualsiasi errore complice?
Solo non lo fa’T Aggiungi duplicato valori. Booleano aggiungere(E e) – aggiunge il specificato elemento a questa impostato Se non è già presente (operazione opzionale). COME, aggiungere() il metodo restituisce booleano e acceso Aggiunta duplicati tornerà falso. Sotto Giava L’esempio del codice sorgente funziona bene e jvm (java virtual machine) non fa’t lamentarsi.
Se inseriamo i valori duplicati sul set, non’T Ottieni errori di tempo di compilazione o tempo di esecuzione. Non lo fa’t Aggiungi valori duplicati nel set.
Di seguito è riportato il metodo ADD () dell’interfaccia set nella raccolta Java che restituisce il valore booleano o vero o falso quando l’oggetto è già presente nel set.
[Aggiungi booleano (e e) – Aggiunge l’elemento specificato a questo set se non è già presente . Restituzioni: valore booleano vero/falso.”
Programma semplice da dimostrare, cosa succede se aggiungi elementi duplicati a un set.
Abbiamo creato un set per archiviare diversi tipi di colori utilizzando Imposta il riferimento dell’interfaccia con oggetto Classe Hashset. Stiamo aggiungendo diversi tipi di colori e.G. Rosso, verde e blu ecc. Nel set e nella visualizzazione dei colori sulla schermata della console iterando il set in loop.
Intenzionalmente, abbiamo aggiunto di nuovo un colore blu per controllare l’accettazione degli hashset. Si noti che il programma Java funzionerà bene e non lancia alcun compilatore o errore di esecuzione. Ma non archiverà valori duplicati.
Esempio di codice sorgente: per controllare Se il set di java aggiungi lo stesso elemento o no
Importa Java.util.Hashset; Importa Java.util.Impostato; Classe pubblica CanaddDuplicateValueinSet < public static void main(String[] args) < Set uniqueColours = new HashSet(); uniqueColours.add("Red"); uniqueColours.add("Green"); uniqueColours.add("Blue"); uniqueColours.add("Blue"); /*Adding duplicate value here, No compiler error and code works fine but doesn't add duplicate value */ System.out.println("Colours available in set are:"); for (String c : uniqueColours)< System.out.println(c); >>>
Produzione:
I colori disponibili nel set sono:
Blu
Rosso
Verde
Domande e risposte rapide di ristoro sul set Java Aggiungi duplicato.
- Q) L’hashset può avere valori duplicati?
- A) No, hashset non può avere valori duplicati.
- A) Un valore booleano viene restituito dal suo metodo ADD () i.e. Vero nell’oggetto non è presente e falso se già presente nel set.
- A) Il programma non mostrerà alcun errore del compilatore o errore di runtime e non consentirà i duplicati.
Se proviamo a inserire valori duplicati in a “Impostato”, cosa accadrà? Riceviamo qualsiasi errore complice?
- Ecco 4 modi per stampare elementi ArrayList in Java
- Cos’è la coda di priorità Java con esempio di applicazione in tempo reale?
- Ciò che è comparabile e comparatore in java?
- Spiega il vettore, la complessità del tempo e come il vettore cresce in java
- Collezioni Java Breve interviste Feq con risposte – Reale
Argomenti raggruppati
Domande di intervista di Java
- Core Java domande
- Domande sulle collezioni Java
- Domande multithreading di Java
- Tutorial Java
- Esercizi di Java
Domande di intervista C/C ++
- Programmazione C
- Domande di base C ++
- Domande anticipate di C ++
- Domande di programmazione C ++
- Esempi di programmazione C ++
C# Domande di intervista
- C# Domande di base
- C# Domande anticipate
- C# domande multithreading
- C# Domande di programmazione
- C# Esercizi di programmazione
- C# Esempi di codifica
- C# tutorial
Domande a scelta multipla
- Serie Fibonacci in Java usando ricorsione e non ricorsione
- Serie Fibonacci in Java usando loop – Clear Logic
- Perché utilizzare i modelli di design – migliori motivi
- Storia reale: come tutte le matricole CSE hanno ottenuto un lavoro in 5 mesi
- 50 Tricky Java MCQS – Controlla se puoi rispondere
- C
- Esempi di programmazione C
- C# avanzato
- C# di base
- C# multi-threading
- Esercizi del programma C#
- Programmazione C#
- C# Esempi di programmazione
- C# tutorial
- C ++ avanzato
- C ++ BASIC
- Programmazione C ++
- Esempi di programmazione C ++
- Coding
- Core Java
- Modelli di progettazione
- Modelli e principi di progettazione
- DS & Algo
- e-autore
- Interviste sulle risorse umane
- Storia di successo dell’intervista
- Codice Java
- Collezioni Java
- Esempi di collezioni Java
- Esercizi di Java
- Java multithreading
- Java Note
- Tutorial Java
- Puzzle matematiche
- MCQ-C++
- MCQ-JAVA
- MCQ-SQL
- Algoritmi MCQS e struttura dei dati
- Networking General
- Oracle PL SQL
- Altri
- Lavori software
- SQL
- Database SQL
- complessità temporale
- Diagramma UML
- Non categorizzato
Java: perché un set può contenere elementi duplicati
Unisciti alla comunità di Dzone e ottieni l’esperienza completa dei membri.
Nelle applicazioni a bassa latenza, la creazione di oggetti non necessari viene spesso evitata riutilizzando gli oggetti mutabili per ridurre la pressione della memoria e quindi il carico sul collettore della spazzatura. Questo rende l’applicazione molto più determinante e con molto meno jitter. Tuttavia, è necessario prestare attenzione a come vengono utilizzati questi oggetti riutilizzati, altrimenti risultati inaspettati potrebbero manifestarsi, ad esempio sotto forma di un set contenente elementi duplicati come [B, B].
Hashcode ed uguali
Giava’S ByteBuffer incorporato fornisce accesso diretto a heap e memoria nativa utilizzando l’indirizzo a 32 bit. Chronicle Bytes è una sostituzione drop-in a 64 bit che si occupa di essere affrontate da segmenti di memoria molto più grandi. Entrambi questi tipi forniscono un metodo hashcode () e un equals () che dipende dal contenuto di byte degli oggetti’ segmento di memoria sottostante. Mentre questo può essere utile in molte situazioni, oggetti mutabili come questi non dovrebbero essere usati nella maggior parte di Java’s Set tipi incorporati e non come chiave nella maggior parte dei tipi di mappa integrati.
Nota: in realtà, solo 31 e 63 bit possono essere utilizzati come offset di indirizzo efficace (E.G. Utilizzo di parametri INT e Long Offset)
Chiavi mutabili
Di seguito, viene presentato un piccolo esempio di codice che illustra il problema con oggetti mutabili riutilizzati. Il codice mostra l’uso di byte ma lo stesso problema esiste per bytebuffer.
Set set = new hashset <> (); Byte >byte = byte.da un"); impostato.Aggiungi (byte); // riutilizzo byte.WritePosition (0); // questo muta già l'oggetto esistente // nei byte impostati.scrivere ("b"); // aggiunge di nuovo lo stesso oggetto byte ma ora sotto // un altro hashcode ().Aggiungi (byte); Sistema.fuori.println (“set = “ + impostato);
Il codice sopra aggiungerà prima un oggetto con “UN” come contenuto che significa che l’insieme contiene [a]. Quindi il contenuto di tale oggetto esistente verrà modificato “B”, che ha l’effetto collaterale di modificare il set in contenuto [b] ma lascerà il valore del codice hash vecchio e il corrispondente secchio hash invariato (diventando effettivamente stantio). Infine, l’oggetto modificato viene aggiunto di nuovo al set ma ora con un altro codice hash che porta alla voce precedente per quello stesso oggetto rimarrà!
Di conseguenza, piuttosto che il forse previsto [A, B], questo produrrà il seguente output:
Testo semplice
set = [b, b]
Bytebuffer e byte oggetti come tasti nelle mappe
Quando si utilizza Java’S bytebuffer oggetti o byte oggetti come chiavi nelle mappe o come elementi in set, una soluzione sta usando un IdentityHashmap o collezioni.newstfrommap (nuovo IdentityHashmap <> ()) per proteggere dall’oggetto mutabile peculiarità sopra descritti. Questo rende l’ashing degli oggetti agnostici al contenuto effettivo del byte e utilizzerà invece il sistema.IdentityHashCode () che non cambia mai durante la vita dell’oggetto.
Un’altra alternativa è utilizzare una versione di sola lettura degli oggetti (ad esempio invocando bytebuffer.asreadonlybuffer ()) e astenersi dal tenere qualsiasi riferimento all’oggetto mutabile originale che potrebbe fornire una porta posteriore per modificare l’oggetto apparentemente lettura’contenuto s.
Coda di mappa della cronaca e cronaca
La mappa di Chronicle è una libreria open source che funziona in modo leggermente diverso rispetto alle implementazioni della mappa Java incorporata nel modo in cui gli oggetti sono serializzati e messi nella memoria off-heap, aprendosi per mappe ultra-grandi che possono essere più grandi della memoria RAM assegnata alla JVM e consente a queste mappe di essere persistendo in file di memoria in modo che le applicazioni possano rifornire molto più fresche più frenetiche.
Il processo di serializzazione ha un altro vantaggio meno noto nel modo in cui consente effettivamente oggetti mutabili riutilizzabili come chiavi perché il contenuto dell’oggetto viene copiato e viene effettivamente congelato ogni volta che una nuova associazione viene inserita nella mappa. Le successive modifiche dell’oggetto mutabile non influenzeranno il contenuto serializzato congelato che consente il riutilizzo dell’oggetto senza restrizioni.
La coda Chronicle Open-Source funziona in modo simile e può fornire code in grado di contenere terabyte di dati persistendo nella memoria secondaria e, per lo stesso motivo della mappa cronaca, consente il riutilizzo degli oggetti di elementi mutabili.
Conclusioni
È pericoloso usare oggetti mutabili, come byte e byteBuffer in cui l’hashcode () dipende dal contenuto dell’oggetto, in alcune mappa e impostazioni impostate.
Un IdentityHashmap protegge dalla corruzione di mappe e impostazioni dovute alla mutazione dell’oggetto ma rende queste strutture agnostiche al contenuto effettivo del byte.
Le versioni di sola lettura degli oggetti del segmento di memoria precedentemente modificato potrebbero fornire una soluzione alternativa.
La coda della mappa della cronaca e della cronaca consentono l’uso senza restrizioni di oggetti mutabili, aprendo il percorso verso operazioni deterministiche a bassa latenza.
Set accetta valori duplicati?
Hashset è un’implementazione dell’interfaccia set che non consente un valore duplicato. La cosa principale è che gli oggetti che sono archiviati in hashset devono sovrascrivere equals () per verificare l’uguaglianza e i metodi hashcode () per nessun valore duplicato sono archiviati nel nostro set. Hashmap è un’implementazione dell’interfaccia mappa, che mappa una chiave da valutare. Le chiavi duplicate non sono consentite in una mappa. Fondamentalmente, l’interfaccia MAP ha due classi di implementazione hashmap e treeMap La differenza principale è che TreeMap mantiene un ordine degli oggetti ma hashmap non lo farà. Hashmap consente valori null e chiavi null. Sia hashset che hashmap non sono sincronizzati.
Ora formulamo la differenza tra hashmap e hashset come previsto in modo tabulare sotto come segue:
Di base Hashset Hashmap Strumenti Imposta interfaccia Interfaccia della mappa Duplicati NO Sì, i valori dei duplicati sono consentiti ma non è consentita una chiave duplicata Valori fittizi SÌ NO Oggetti richiesti durante un’operazione di aggiunta 1 2 Aggiunta e memorizzazione del meccanismo Oggetto hashmap Tecnica di hashing Velocità È relativamente più lento di Hashmap È relativamente più veloce di Hashset a causa della tecnica di hashing qui. Nullo Avere un singolo valore null Chiave null singola e qualsiasi numero di valori null Metodo di inserzione È necessario un solo valore per il processo di inserimento. La funzione Add () viene utilizzata per l’inserimento Sono necessari due valori per il processo di inserimento. La funzione put () viene utilizzata per l’inserimento. Archivio dati I dati vengono archiviati come oggetti. I dati vengono archiviati come coppia di valore chiave. Complessità SU) O (1) Ceniamo di cogliere la comprensione sbirciando nel lavoro interno con l’aiuto di programmi puliti di Java.
Esempio 1: Hashset