测试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表达式