2016-05-27 1 views
-1

J'essaie de passer par une liste liée (que nous pouvons appeler la super liste) qui contient des éléments de listes chaînées (sous-listes).Comment trouver la longueur d'une liste liée dans une liste liée?

Le procédé qui ajoute les éléments dans les deux listes liées est:

LinkedList<Object> list = new LinkedList<>(); 

public void add(Object... item) { 
    LinkedList<Object> thingie = new LinkedList<>(); 
    for (Object i: item) { 
     thingie.add(i); 
    } 
    list.addAll(thingie); 
} 

maintenant je dois écrire des méthodes pour vérifier s'il y a des groupes de 1, 2, 3, 4 éléments dans les sous-listes en parcourant le superliste ce que j'ai jusqu'à présent (ce qui est très mal) est la suivante:

LinkedList <Object> ohno = new LinkedList<>(); 
     for (int i = 0; i<list.size(); i++){ 
      ohno = (LinkedList<Object>) list.get(i); 
      if (int j = 1; j = ohno.size();){ 
       return true; 
      } 
      else return false; 
     } 
+0

Votre super liste 'list' est juste une liste d'objets et non une liste de' LinkedList'. – Abhishek

+0

Je pense que vous voulez 'si (i == ohno.size() - 1) {' –

+0

Que voulez-vous dire par _ "vérifier s'il y a des groupes de 1, 2, 3, 4 éléments" _? Comment allez-vous utiliser cette information? –

Répondre

0

ce que vous pouvez faire est de créer une méthode qui passe un paramètre pour la taille du groupe en question et trouve s'il y a des listes de sous de taille du groupe de taille.

private static boolean hasSubListsOfSize (LinkedList<Object> superList, final int groupSize) 
{ 
    for (int i = 0, size = superList.size(); i < size; i++) 
    { 
     LinkedList<Object> subList = (LinkedList<Object>) superList.get(i); 
     if (subList.size() == groupSize) 
     { 
      return true; 
     } 
    } 

    // didn't find any sub lists of the group size 
    return false; 
} 

Side Note: Comme l'a souligné @Abhishek votre super liste est techniquement pas un LinkedList de LinkedList's. C'est un LinkedList de Objects. C'est pourquoi vous devez faire le casting explicite à LinkedList pour accéder au "Sub LinkedList".

Si vous voulez un vrai LinkedList de LinkedList's, vous devez créer le superliste comme ceci:

LinkedList<LinkedList<Object>> superList = new LinkedList<LinkedList<Object>>(); 

Si vous créez cette façon, vous éviterez d'avoir à faire les conversions explicites au moment de la compilation.