10
votes

Comment supprimer des éléments dupliqués d'une liste à l'aide de la vitesse Apache

J'ai une liste avec des éléments en double, j'ai besoin d'utiliser la vélocité

par exemple, les messages contiennent des éléments dupliqués xxx

Je veux supprimer le duplicate en utilisant la vitesse,

Toute aide serait appréciée


1 commentaires

Ces choses doivent être résolues sur le côté Java, la vélocité n'a pas été conçue pour construire des structures de données.


4 Réponses :


1
votes

Vous ne pouvez pas faire cela en vélocité. Vous devez fournir un modèle qui ne contient aucun doublure. Le moyen le plus simple consiste à utiliser nouveau hashset (postslist) - cela éliminera les doublons (basé sur la égale (..) Méthode)

Si vous ne pouvez vraiment pas réussir le modèle approprié, vous pouvez essayer de définir un outil personnalisé qui prend une liste et retourne un ensemble, mais ce ne serait pas facile.


0 commentaires

0
votes

En plus de ne pas être possible dans la vélocité, d'un point de vue architectural Ce que vous voulez n'a pas de sens du tout. La partie "Supprimer des doublons" est une sorte de logique et cela doit être pris en charge à la bonne place. Une vue n'est pas le bon endroit pour le faire. Donc, vous devriez le faire par tous les moyens de Java et même être heureux que ce n'est pas possible en vélocité.

Même si votre rôle ne permet pas de modifier le code Java, cela doit encore être résolu en Java.


0 commentaires

5
votes

Juste pour l'argument, car d'autres ont dit que cela n'est pas possible avec la vitesse, je voulais montrer qu'il est en fait possible avec la vitesse, mais toujours non recommandé.

Pour ceux qui sont intéressés par la manière dont cela pourrait être fait: xxx


1 commentaires

Il est encore plus facile avec les versions plus récentes, car vous pouvez utiliser la méthode "contient" sur la liste. Vous pouvez donc simplement utiliser une boucle unique et ajouter tous les objets à une liste, qui ne sont pas déjà contenus, ou vous pouvez même utiliser le type de carte Velocit et enregistrer les éléments sous forme de touches ;-)



10
votes

Ceci est possible, ce qui devrait fonctionner en fonction de votre version de la vitesse. Un peu plus concis que la réponse ci-dessus.

#set($uniquePosts = [])
#foreach($post in $posts) 
    #if( ! $uniquePosts.contains( $post.name )  )
        #if( $uniquePosts.add($post.name) ) #end 
        ##note the if above is to trap a "true" return - may not be required
        $post.name 
    #end
#end


1 commentaires

Et encore plus simple: #if (! $ seulseposs.contains ($ post.name) && $ uniqueEposts.add ($ post.name)) #end