Ein Prozess, der nur diejenigen aus einem Array oder einer Liste extrahiert, die die Bedingungen erfüllen. Mit Perl können Sie einfach wie folgt schreiben (denken Sie daran)
sample.pl
my @array = ('001', '901', '201', '010', '999', '311');
my @result = grep { /1$/ } @array;
Nach der Untersuchung, ob mit Java dasselbe möglich ist, scheint ListUtils # select () etwas Ähnliches zu tun.
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) {
//Am Ende'1'Wann ist beigefügt
return StringUtils.endsWith(arg0, "1");
}
});
System.out.println(result.toString()); //=> [001, 901, 201, 311]
Ich habe versucht, Predicate zu einem anonymen inneren Typ zu machen, aber was ist besser, um Predicate in meiner Klasse zu implementieren? Letzteres fühlt sich eher wie "altes Schreiben" an. Dieses Mal habe ich eine Beispielquelle mit einer Liste von Zeichenfolgen geschrieben, aber ich denke, dass dies effektiver ist, wenn Sie aus einer Liste von Beans extrahieren möchten.
Ist es so, wenn es ohne ListUtils # select () geschrieben wird? Ich fühlte mich vertraut. Das übliche Muster, dass die Verschachtelung von if-Anweisungen immer tiefer wird, wenn die Bedingungen komplizierter werden.
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