Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Java: Ordinamento comune Lista

    ciao a tutti.
    ho un piccolo problema e non so come venirne a capo.
    In un programma (Java) ho due liste(LinkedList) nella quale sono inseriti nominativi di persone (Cognome nome), ordinati per cognome tramite la Collections.sort e fin qui tutto bene.

    Il problema nasce nel momento della comparazione delle due liste.
    Mi spiego meglio.
    Supponiamo di avere due Liste di soli nomi(per semplicità) con numero arbitrario.
    Codice PHP:
    Lista 1             Lista 2
    Angelo              Alberto
    Dario               Dario
    Franco              Franco
    Mario               Francesca
    Mimmo               Mario
    Roberto             Marco
    Salvo               Roberto
    Tiziana             Stefano
                        Tiziana 

    Ora dovrei ottenere due liste separate in questo modo
    Codice PHP:
    Lista 1                             Lista2
    null
    (o Persona() vuota)             Alberto
    Angelo                              null
    Dario                               Dario
    Franco                              Franco
    null                                Francesca
    Mario                               Mario
    null                                Marco
    Mimmo                               null
    Roberto                             Roberto
    Salvo                               null
    null                                Stefano
    Tiziana                             Tiziana 
    Quindi se i nomi sono comuni nelle due liste metterli nella stessa posizione nelle due liste separate invece se non è comune ordinarlo nella prima o seconda lista come se fosse una lista comune...
    Non mi interessa il codice, mi basta un'idea semplice, poi ad implementarla ci metto poco perché fino ad ora ho avuto qualche idea ma molto complicata dal punto di vista computazionale.

    Grazie per ogni aiuto/consiglio.
    Ciao
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  2. #2
    Puoi provare con

    codice:
    for (int i=0;i<list1.size();i++)
    {
          if(list1.get(i)==list2.get(i))
          {
              list3.add(i,list1.get(i);
          else {
               list3.add(i,null);
                }
    }
    e lo stesso con list4 in relazione a list2.

    Non so se possa soddisfare le tue esigenze.

  3. #3
    No...i nomi non devono essere messi in una terza lista solo se sono uguali...in quel caso sarebbe stato facile...
    Devono essere messi anche i nomi discordi in ordine (alfabetico) comune al merge delle due liste.
    Col tuo snippet inserisci solo i nomi comuni (fra l'altro nella stessa posizione) tralasciado i discordi e i nomi concordi in posti diversi...senza tener conto che essendo discordi come numero di elementi (e l'avevo scritto) il programma andrebbe in ArrayIndexOutOfBoundsException.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  4. #4
    Infatti avevo scritto "Non so se soddisfa le tue esigenze".

    Forse con più cicli for annidati. Confronta ogni singolo elemento della prima con ogni singolo elemento della seconda e viceversa. Una cosa del genere.

    Il problema è che la lunghezza della lista trasformata supera inevitabilmente quella di partenza. Puoi provare a inizializzarle con più elementi ad esempio null di quelli che ti occorrono in realtà.

  5. #5
    No sto provando in altro modo...il tuo codice era troppo semplice.
    sto facendo:
    - un merge delle due liste
    - ordinamento della lista ottenuta
    - cancellazione dei doppioni in quest'ultima
    - e con un for annidiato ottenere gli indici dove andranno inseriti questi valori

    avendo gli indici a quel punto mi dovrebbe venir facile.

    ovviamente facile a dirsi ma un pò lunghetto da implementare... sopratutto visto che nel mio caso non si tratta di stringhe(l'ho messo giù così nell'esempio per semplificare) bensì di oggetti.

    Cmq è ben accetto qualunque altro consiglio
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

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 © 2025 vBulletin Solutions, Inc. All rights reserved.