considérer une liste de valeurs longues J'ai écrit le code ci-dessous pour implémenter l'énoncé de problème: p> sortie: strong> Sortie attendue: strong> Le dernier numéro [7] ne s'ajoute pas au finalton . Toute suggestion! P> p> [1,2,3,4,2,3,6,3,7,3] code>. Je dois mettre en œuvre le programme Java pour scinder la liste en fonction de la valeur. Disons valeur = 3 code>. Chaque fois que je trouve valeur = 3 code>. J'ai besoin de diviser la liste de manière à ce que [[1,2], [3], [4,2], [3], [6], [3], [7], [3], [3]] code>. [[1, 2], [3 ], [4, 2], [3], [6], [3]] CODE> P> [[1,2] [3], [4,2], [3], [6], [3], [7]] Code> P>
3 Réponses :
Essayez-le comme ceci:
public static void main(String[] args) {
// The number you want to split by
int delimiter = 3;
List<Integer> input = Arrays.asList(5, 3, 10, 4, 3, 5, 6, 3, 4);
List<List<Integer>> result = new ArrayList<>();
result.add(new ArrayList<>()); // Add a list so that we have something to work with
for (int i = 0; i < input.size(); i++) {
// Get the next value in the list
int val = input.get(i);
// If the current value equals the one we want to split by...
if (val == delimiter) {
//... add a new list containing only the delimiter...
result.add(Arrays.asList(delimiter));
//... and add a new list so the other values will be added correctly
result.add(new ArrayList<>());
} else // if this is just a random number, add it to the last list
result.get(result.size() - 1).add(val);
}
// If the last number in your input is equal to the delimiter, there will be an empty
// list at the end, which can be prevented this way
if (result.get(result.size() - 1).size() == 0)
result.remove(result.size() - 1);
}
Veuillez ajouter un certain contexte autour de votre réponse et ne pas simplement publier le code.
Sur une note latérale, si vous avez pris le temps d'écrire la réponse, veuillez également prendre un certain temps pour poster une solution complète. Ne laissez pas // votre liste code> et ajoutez une liste d'échantillons là-bas.
Gardez également vos noms de variables compatibles avec les noms de variable dans la question. Cela ne pourrait être qu'une partie du code de l'OP.
Il y a un [] [] code> dans le résultat code>.
@HARSHALPAREKH Vous avez raison, j'ai ajouté des commentaires et je vais corriger ce vide [] code>. Je vais cependant utiliser des noms de variables que je suis le plus à l'aise, car si je vais poster une solution pour OP ici, le moins qu'elles puissent faire est de changer les noms de variable eux-mêmes.
Le problème est que vous ajoutez la liste de départ complète de votre tableau,
à la place, vous devez garder un autre tableau à l'esprit afin que vous puissiez pousser celui-ci lorsque vous venez accrocher A 3. P>
List<Integer> list_i_want_to_push = new ArrayList<>();
for (int i =0; i < list.size(); i++){
list_i_want_to_push.add(list.get(i));
if(val == list.get(i)){
list_i_want_to_push.remove(i);
finalList.add(list_i_want_to_push);
finalList.add(Arrays.asList(val));
list_i_want_to_push = []; //empty your array
}
}
System.out.println(finalList);
Vous ne compilez pas. Il est Liste Liste list_i_want_to_push code> Ce n'est pas style Java. Arrays.Aslist (VAL) CODE> Renvoie une liste fixe, aucune modification ne peut être apportée à cela à l'avenir si nécessaire.
@HARSHALPAREKH, OW DAMN! Je ne connaissais pas la deuxième partie de votre commentaire !! Thx mate, type fixe!
Je crois que cela fait ce que vous voulez, mais je devais faire des hypothèses.
impression p>
Tout d'abord, vous n'ajoutez pas ces valeurs
[1,2,3,4,2,3,6,3,7,3] code> à la liste. Veuillez conserver votre entrée et l'entrée dans le code cohérent.Après votre boucle pour la boucle, la liste TEMP contient 7. Vous devez donc ajouter ici la liste finale.