测试java列表中的值
我当前有一个站点对象列表作为我的站点对象:测试java列表中的值,java,Java,我当前有一个站点对象列表作为我的站点对象: List<Site> sites = new LinkedList(); 我想编写一个方法,测试站点中的任何“Site”值是否包含url字符串或id字符串 我不能对此使用contains方法,因为我不关心主机值 除了编写以下内容外,还有没有更简单的方法通过集合来完成: public boolean checkValues(String url, String id) { for (Site : this.sites) {
List<Site> sites = new LinkedList();
我想编写一个方法,测试站点中的任何“Site”值是否包含url字符串或id字符串
我不能对此使用contains方法,因为我不关心主机值
除了编写以下内容外,还有没有更简单的方法通过集合来完成:
public boolean checkValues(String url, String id) {
for (Site : this.sites) {
// Check if the url, id is in the site
}
不,集合中还没有这样的方法。我不确定是否有任何第三方解决方案 或者,可以执行以下操作(当然,如果用例允许的话) =====================
for (Site site : sites) {
if(site.contains(s)) {
//TODO
}
}
不,集合中还没有这样的方法。我不确定是否有任何第三方解决方案 或者,可以执行以下操作(当然,如果用例允许的话) =====================
for (Site site : sites) {
if(site.contains(s)) {
//TODO
}
}
使用Guava集合筛选器谓词
Iterable<Person> filtered = Iterables.filter(allPersons, new Predicate<Person>() {
@Override
public boolean apply(Person p) {
return acceptedNames.contains(p.getName());
}
});
Iterable filtered=Iterables.filter(所有人,新谓词(){
@凌驾
公共布尔应用(个人p){
返回acceptedNames.contains(p.getName());
}
});
还有同样的问题:使用番石榴收集过滤器谓词
Iterable<Person> filtered = Iterables.filter(allPersons, new Predicate<Person>() {
@Override
public boolean apply(Person p) {
return acceptedNames.contains(p.getName());
}
});
Iterable filtered=Iterables.filter(所有人,新谓词(){
@凌驾
公共布尔应用(个人p){
返回acceptedNames.contains(p.getName());
}
});
还有一个相同的问题:您可以使用番石榴(如另一个答案中所解释的)或Java 8中的本机。这利用了lambda函数和
流
对象
假设我们只关心包含字符串4的ID或包含字符串6的URL。这里有一种方法
这是更详细的方法,结合了Java8Lambdas和老式迭代
final Stream<Site> filter =
siteList.stream().filter(site -> site.getId().contains("4") || site.getUrl().contains("6"));
for(Iterator<Site> filterIter = filter.iterator(); filterIter.hasNext(); ) {
Site next = filterIter.next();
System.out.println(next);
}
下面是最简洁的方法,使用System.out::println
方法参考
siteList.stream().filter(
site -> site.getId().contains("4") ||
site.getUrl().contains("6"))
.forEach(System.out::println);
您可以使用番石榴(如另一个答案中所解释的)或者在Java8中使用本机实现。这利用了lambda函数和
流
对象
假设我们只关心包含字符串4的ID或包含字符串6的URL。这里有一种方法
这是更详细的方法,结合了Java8Lambdas和老式迭代
final Stream<Site> filter =
siteList.stream().filter(site -> site.getId().contains("4") || site.getUrl().contains("6"));
for(Iterator<Site> filterIter = filter.iterator(); filterIter.hasNext(); ) {
Site next = filterIter.next();
System.out.println(next);
}
下面是最简洁的方法,使用System.out::println
方法参考
siteList.stream().filter(
site -> site.getId().contains("4") ||
site.getUrl().contains("6"))
.forEach(System.out::println);
我不认为有更简单的方法,至少在Java8之前,使用lambda表达式。我不认为有更简单的方法,至少在Java8之前,使用lambda表达式