Comparer deux listes

jeremieT Messages postés 14 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 10 juin 2009 - 21 avril 2009 à 17:43
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 - 21 avril 2009 à 22:41
bonjour,
dans un projet je dois comparer deux listes de fichiers et retourner une troisième liste avec uniquement les fichiers qui sont dans la première mais pas dans la deuxième.
J'ai donc écrit une classe pour cela mais éclipse me renvoi : java.lang.NullPointerException
Pouriez vous m'aider a trouver l'erreur? apparemment c'est un indice qui pointe nul part mais je ne le trouve pas:(

public class Comparerlistes {
    static String [] listeafaire ;
    static int nb = 0;
   
    public static String[] comparateur(String[] listeDD, String[] listefiches)
    {
        int k = 0;
        for(int i=0;i<listeDD.length;i++)
        {
            for(int j=0;j<listefiches.length;j++)
            {
            if(listeDD[i]== listefiches[j])
            {
                 nb = nb+1;
            }
            }
            if(nb == 0)
            {
                listeafaire[k] = listeDD[i];
                k++;
               
            }
        }
      
    return listeafaire;   
    }

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 avril 2009 à 18:00
Salut,

Il faut que tu instancie ton tableau listeafaire :

public class Comparerlistes {

public static List<String> comparateur(String[] listeDD, String[] listefiches)
{
List<String> listeafaire = new LinkedList<String>(); // Aucun intérêt de le déclarer en static niveau classe, ca prend bien moins de ressource ici !
int nb = 0; // IDEM

int k = 0;
for(int i=0;i<listeDD.length;i++)
{
for(int j=0;j<listefiches.length;j++)
{
if(listeDD[i]== listefiches[j])
{
nb = nb+1;
}
}
/*if(nb == 0) pourquoi ne prendre que le premier ? */
listeafaire.add(listeDD[i];
}

return listeafaire;
}
0
jeremieT Messages postés 14 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 10 juin 2009
21 avril 2009 à 19:03
merci!
en fait je veux que dans le tableau retourné il n'y ait que le nom des fichiers de la première liste qui ne sont pas dans la seconde.

c'est pour cela que je met le compteur nb qui s'incrémente de 1si il y'a une correspondance. lorsque toutes les case du deuxième tableau sont parcouru si nb est toujours égal a 0 c'est que le fichier n'est pas dans la seconde et donc je le met dans le 3eme tableau.

je prefere untiliser des tableaux de string partout car je fais pleins d'operations dessus dans d'autres classes.
donc si vous avez une autre solusion n'esitez pas a me le dire:)
merci d'avance
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 avril 2009 à 19:38
Je te conseille vivement d'utiliser des listes à la place de tes tableaux : c'est bien plus simple à utiliser !!!
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
21 avril 2009 à 22:41
Salut,
Darksidious a raison !!!
Mais si tu tiens vraiment à utiliser un tableau, tu peux garder le code de Darksidious et au lieu de renvoyer la liste, tu récupères sa taille, tu instancies ton tableau de string et tu le remplis des éléments contenus dans la liste puis tu renvoies le tableau.
0
Rejoignez-nous