J'ai déjà googlé mais je n'ai pas pu trouver une solution satisfaisante.
Je souhaite enregistrer tous les numéros dans la première liste: "Liste". P>
Si les chiffres sont divisibles par 2 , Je souhaite aussi les enregistrer dans la deuxième liste: "list2" p>
Mes problèmes sont les suivants: p>
Je ne peux que passer la première liste en tant que paramètre p>
merci pour votre aide! p>
5 Réponses :
print(list); private static void print(ArrayList<Integer> list) { for (Integer integer : list) { System.out.println(integer); if(integer%2==0){ System.out.println("sub list----"+integer); } } }
Thax :) Je ne peux que passer la première liste en tant que paramètre. Existe-t-il un moyen d'accéder au subliste sans passer la deuxième liste sous forme de paramètre?
Votre subliste ne contient que des éléments qui peuvent être divisibles par 2. Vous pouvez arriver sur la base de la première liste.
J'ai ajouté trois suggestions. Jetez un coup d'œil au troisième
Déclarez la liste globale. Et envoyer la première liste comme paramètre. Imprimez le subliste dans la méthode d'impression. Sortie: P> ------------------Original List------------------
2
1
4
5
10
------------------Sub List------------------
2
4
10
Salut Som, merci! Est-ce que cette ligne est correcte ?: ArrayListe statique
@alvira Oui, vous pouvez transmettre ceci ... Mon code est testé. Sinon, il aurait lancé des erreurs de compilation si la déclaration était fausse.
Vous pouvez utiliser des flux Java pour y parvenir. C'est plus propre et plus facile à travailler avec et aussi moins de code.
import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); List<Integer> list2 = new ArrayList<Integer>(); list.add(2); list.add(1); list.add(4); list.add(5); list.add(10); list2 = list.stream() .filter( number -> number%2==0) .collect(Collectors.toList()); for(int number : list2) { System.out.println(number); } } }
Si on utilise Java 8 ou plus tard, je suggérerais d'utiliser le API en streaming : Ideone Demo KBD> P> P>
Si vous modifiez la portée de la sous-liste. Alors impression () peut évaluer.
public class Test { static ArrayList<Integer> sublist = new ArrayList<Integer>(); public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<Integer>(); list.add(2); list.add(1); list.add(4); list.add(5); list.add(10); for (int i = 0; i < list.size(); i++) { if (list.get(i) % 2 == 0) { sublist.add(list.get(i)); } } print(list); } private static void print(ArrayList<Integer> list) { for (Integer integer : list) { if(sublist.contains(integer)) System.out.println(integer); } } }
Vous pouvez utiliser des flux:
Liste list2 = list1.stream (). Filtre (valeur -> Valeur% 2 == 0) .Collect (collectionneurs.tolist ()); Code>
Vous pouvez appeler la méthode d'impression deux fois avec vos deux listes différentes. Une fois la liste principale et la deuxième fois que le subliste divisible par 2. Quel problème auquel vous êtes confronté dans cette approche?