Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    duplicati con uso di hashset

    Salve a tutti. Ho un problema con l'uso di un oggetto hashset. In teoria gia di suo un set non dovrebbe avere duplicati, ma passando degli oggetti diversi che però hanno lo stesso valore mi ritrovo ad avere comunque dei duplicati. Come posso ovviare a ciò?

    Dove ho messo i puntini ho omesso del codice che non è importante al fine della domanda fatta.


    Set <String []> z=new HashSet<String []>();
    .......

    String [][] rule= StoreManager.rulesStrored();
    String[][] temp= StoreManager.rulesForTable(regole[i][1]);
    for (int k = 0; k < temp.length; k++) {
    z.add(temp[k]); // aggiungi le regole
    }
    ........

    if (st3.nextToken(",").trim().equals(regole[i][0])){
    z.add(rule[i]); // aggiungi la regola
    }

    .......

    String[][] rulesT =new String [z.size()][4];
    if (z.size()!=0){
    Iterator it = z.iterator();
    int k =0;
    while(it.hasNext())
    {
    rulesT [k] = (String[]) it.next();
    k++;
    }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Aspetta tu hai un array di stringhe, il set usa equals e hashcode per verificare l'uguaglianza, secondo me caschi lì
    RTFM Read That F*** Manual!!!

  3. #3
    No non ho implementato equals e hashcode. é la prima volta che uso un hashset. Cosa dovrei fare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    andiamo oltre, per le collection la presenza è certificata in base all'implementazione di equals e hashcode, se sono uguali l'oggetto è uguale e non lo aggiunge.
    Il discorso è diverso per array di stringhe...non c'è altro mdo di modellare i dati che devi contenere?
    RTFM Read That F*** Manual!!!

  5. #5
    Sia rule che temp sono dei resultset di una query che poi io gestisco tramite un array di stringhe.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    mi è chiaro, però vorrei capire un po' cosa rappresentano e se puoi memorizzarle in altro modo, in modo da sfruttare equals e hashcode.
    Altrimenti prima di inserirli devi tu controllare che l'array non corrisponda ad un altro e può essere dispendioso
    RTFM Read That F*** Manual!!!

  7. #7
    Vengono eseguite una serie di query. Se la query è un select * il resultset va in temp altrimenti va in rule, entrambi poi vengono passati all'hash set che riempirà una jtable. Può però capitare che alcuni di questi resultset coincidano e quindi mi ritrovo delle righe duplicate.
    Spero di essere stata chiara.

  8. #8
    Secondo te se implemento equals confrontando gli id del resultser (cioè il primo campo dell'array) potrei risolvere il prolema?

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    eh? NO, per niente...sarà anche l'influenza, boh
    Scusa ma sto resultSet rappresenta un oggetto si o no?
    Nel senso, fai una query su una tabella e devi tenerti i risultati nei vari casi? Questa tabella è mappata su una classe java? Se si il tuo set deve contenere la classe mappata per le quali hai fatto override di equals e hashcode in modo opportuno
    RTFM Read That F*** Manual!!!

  10. #10
    Ho capito. Però anche se creo l'oggetto resultset il mio problema è che non ho come duplicato l'intero resultset ma una riga di questo. Scusami prima ho sbagliato a scrivere, la differenza delle query non è nel select ma nel where, sorry.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.