Un processus qui extrait uniquement ceux qui remplissent les conditions d'un tableau ou d'une liste. Avec Perl, vous pouvez facilement écrire comme suit (rappelez-vous)
sample.pl
my @array = ('001', '901', '201', '010', '999', '311');
my @result = grep { /1$/ } @array;
Après avoir vérifié si la même chose peut être faite avec Java, il semble que ListUtils # select () puisse faire quelque chose de similaire.
Sample.java
List<String> list = Arrays.asList("001", "901", "201", "010", "999", "311");
List<String> result = ListUtils.select(list, new Predicate<String>() {
@Override
public boolean evaluate(String arg0) {
//À la fin'1'Quand est attaché
return StringUtils.endsWith(arg0, "1");
}
});
System.out.println(result.toString()); //=> [001, 901, 201, 311]
J'ai essayé de faire de Predicate un type interne anonyme, mais quel est le meilleur pour implémenter Predicate dans ma classe? Ce dernier ressemble plus à une «écriture ancienne». Cette fois, j'ai écrit un exemple de source avec une liste de chaînes de caractères, mais je pense que ce sera plus efficace lorsque vous voudrez extraire d'une liste de beans.
Est-ce que c'est comme ça quand il est écrit sans utiliser ListUtils # select ()? Cela m'a fait me sentir familier. Le modèle habituel selon lequel l'imbrication des instructions if devient de plus en plus profonde à mesure que les conditions se compliquent.
Sample2.java
List<String> list = Arrays.asList("001", "901", "201", "010", "999", "311");
List<String> result = new ArrayList<String>();
for (String s : list) {
if (s.endsWith("1")) {
result.add(s);
}
}
System.out.println(result.toString()); //=> [001, 901, 201, 311]
Recommended Posts