Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797

    [JAVA] Controllare che una lista sia contenuta in un altra

    Salve gente,
    ho un problema:
    devo riuscire a capire se gli elementi della lista 1 sono contenuti nella lista 2:
    es:
    lista 1 che contiene "italiano"
    lista 2 che contiene "italiano", "inglese"

    o

    lista 1 che contiene "inglese"
    lista 2 che contiene "italiano", "inglese"

    o

    lista 1 che contiene "inglese", "italiano"
    lista 2 che contiene "italiano", "inglese"

    ma non
    lista 1 che contiene "inglese", "italiano"
    lista 2 che contiene "italiano"

    possibile?
    come?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    39
    Costruisci la prima lista di tipo java.util.ArrayList, scorri la seconda e per ogni elemento utilizza il metodo:
    public boolean contains(Object elem)

    [scusa, mi e' scappato l'invio]
    ..e conta le occorrenze delle seconda della prima.

  3. #3
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    Originariamente inviato da dafnev
    Costruisci la prima lista di tipo java.util.ArrayList, scorri la seconda e per ogni elemento utilizza il metodo:
    public boolean contains(Object elem)

    [scusa, mi e' scappato l'invio]
    ..e conta le occorrenze delle seconda della prima.
    ma caso mai scorro la prima e per ogni elemnto faccio lista2.contains(elem), no?
    e incremento.
    se l'incremento è uguale alla dimensione allora ok, no?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    39
    E' un po' tirata via, ma dovrebbe funzionare anche cosi':
    import java.util.ArrayList;

    public class Prova {

    public static void main(String[] args) {

    ArrayList primo = new ArrayList();
    ArrayList secondo = new ArrayList();

    primo.add("1");
    primo.add("2");
    primo.add("3");
    primo.add("4");
    primo.add("5");
    primo.add("6");
    secondo.add("6");
    secondo.add("5");
    secondo.add("4");
    secondo.add("3");
    secondo.add("2");
    secondo.add("1");

    System.out.println(contaOccorrenze(primo, secondo));

    primo = new ArrayList();
    secondo = new ArrayList();

    primo.add("1");
    primo.add("2");
    primo.add("3");
    primo.add("4");
    primo.add("5");
    primo.add("6");
    secondo.add("6");

    System.out.println(contaOccorrenze(primo, secondo));

    }

    private static boolean contaOccorrenze(ArrayList primo, ArrayList secondo) {
    ArrayList compare = new ArrayList();

    for(int i=0; i<primo.size(); i++) {
    if(secondo.contains(primo.get(i))) {
    compare.add(primo.get(i));
    }
    }

    if(primo.size() == compare.size())
    return true;
    else
    return false;
    }

    }


    La prima volta contaOccorrenze ti torna true, mentre la seconda false....
    Puo' essere ottmizzata contando direttamente le occorrenze, ma anche cosi' dovrebbe andare.

    Che ne pensi?

  5. #5
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    visto, dovrebbe andare.
    ma c'è il ContainsALL, come funziona? nn basta quello?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    39
    ancora meglio (come tu avevi detto):


    private static boolean contaOccorrenze(ArrayList primo, ArrayList secondo) {
    int index = 0;

    for(int i=0; i<primo.size(); i++) {
    if(secondo.contains(primo.get(i))) {
    index++;
    }
    }

    if(primo.size() == index)
    return true;
    else
    return false;
    }


    ...ho postato prima di leggere la tua risposta

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Esempio banalissimo:

    codice:
    List<String> list1 = Arrays.asList ("a", "f", "k", "m");
    List<String> list2 = Arrays.asList ("f", "m");
            
    System.out.println (list1.containsAll (list2));
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    il probelma è che sono tipi diversi
    il primo è un record [id,nome]
    la seconda solo [id]
    allora ho fatto il ciclo e controllato se il contatore è come la grandezza

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.