0
votes

Sélection des 25% des objets dans une arrayliste en Java

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);
    }


1 commentaires

Utilisez plutôt une carte et itérer à travers elle pour obtenir les vals.


5 Réponses :


0
votes

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);
}


0 commentaires

3
votes

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);
}


0 commentaires

2
votes

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));


1 commentaires

Pourquoi savez-vous tout? +1



3
votes
double percentage = listLength * 0.25;

0 commentaires

1
votes

Voici une solution avec des flux utilisant limite et Ignorer : xxx


0 commentaires