J'essaie de sélectionner le premier et le dernier 25% des objets dans une liste et les insérer dans une deuxième liste. J'ai calculé le pourcentage et créé une boucle pour sélectionner les 25% des premiers objets, mais je ne pouvais pas comprendre comment sélectionner les 25% des objets de la liste.
List<NodeObject> selectedNodes = new ArrayList(); //Calculate the percentage double listLength = nodes.size(); double percentage = (listLength / 100) * 25; int listQuarter = (int) percentage; //Select first 25% for (int i = 0; i < listQuarter; i++) { NodeObject node = nodes.get(i); selectedNodes.add(node); }
5 Réponses :
Eh bien, si vous voulez continuer à faire ce que vous faites, il suffit de boucler en arrière.
// Select last 25% for (int i = nodes.size()-1; i > nodes.size()-listQuarter; i--) { NodeObject node = nodes.get(i); selectedNodes.add(node); }
Il est plus simple qu'il n'y paraît. Démarrez simplement l'itération du début du dernier trimestre, puis terminez la longueur de la liste comme celle-ci:
//Select last 25% for (int i = listLength - listQuarter; i < listLength; i++) { NodeObject node = nodes.get(i); selectedNodes.add(node); }
Utiliser subliste code> pour obtenir une partie de la liste et
addall code> pour l'ajouter à l'une dans l'autre liste:
selectedNodes.addAll(nodes.subList(listLength - listQuarter, listLength));
Pourquoi savez-vous tout? +1
double percentage = listLength * 0.25;
Voici une solution avec des flux utilisant limite code> et
Ignorer code>:
Utilisez plutôt une carte et itérer à travers elle pour obtenir les vals.