当前位置: 首页 > 知识库问答 >
问题:

有没有一种方法可以使用一个通用的方法来获取字符串和长字符串的Iterable

太叔经赋
2023-03-14

我有以下2种方法:

boolean iterableContainsStr(Iterable<String> iterable, Object matcher) {
        return StreamSupport.stream(iterable.spliterator(), false).anyMatch(i -> i.equals(matcher));
    }

boolean iterableContainsLong(Iterable<Long> iterable, Object matcher) {
        return StreamSupport.stream(iterable.spliterator(), false).anyMatch(i -> i.equals(matcher));
    }

两种方法的内容相等,我尝试使用以下方法:

boolean iterableContains(Iterable<Object> iterable, Object matcher) {
        return StreamSupport.stream(iterable.spliterator(), false).anyMatch(i -> i.equals(matcher));
    }

但当我尝试将其与字符串或Long iterable一起使用时,它会引发编译错误。有什么解决方案吗?

共有3个答案

缑智敏
2023-03-14
boolean iteContains(Iterable<?> itr, Object matcher) {
        return StreamSupport.stream(itr.spliterator(), false).anyMatch(i -> i.equals(matcher));
    }

您可以使用<代码> 通配符类型

湛同
2023-03-14

您可以尝试使用泛型方法,matcher也应该是T:

static <T> boolean iterableContains2(Iterable<T> iterable, T matcher) {
    return StreamSupport.stream(iterable.spliterator(), false).anyMatch(i -> i.equals(matcher));
}
尉迟景福
2023-03-14

编译错误是因为您的方法需要String类型的类Iterable,而您将Object类型的类Iterable传递给它。

只需使用泛型(或@Stephen c建议的whildcard)

<T> boolean  iterableContains(Iterable<T> iterable, Object matcher) {
    return StreamSupport.stream(iterable.spliterator(), false).anyMatch(i -> i.equals(matcher));
}

boolean iterableContains(Iterable<?> iterable, Object matcher) {
 ...
}

and then

Iterable<String> iter = List.of("aaa");
System.out.println(iterableContains(iter, "aaa")); //true
System.out.println(iterableContains(iter, "bbb")); //false
 类似资料:
  • 问题内容: 例如,如果我有以下字符串: “这是一个字符串” 我可以将其分割为每个第二个“-”而不是每个“-”,以便它返回两个值(“ this-is”和“ a-string”)而不是返回四个值吗? 问题答案: 这是另一个解决方案:

  • 问题内容: 让我们说我有这样的查询: 通过在各处手动更改字符串,我使用不同的表多次运行此查询。我尝试声明以下内容: 但这似乎不起作用,因为它引发了一个错误,提示我必须先声明为表变量,然后才能使用它。我如何对表名进行模板化,如果可以的话,Intellisense仍然可以使用吗? 问题答案: 您可以将其包装在EXEC语句中,如下所示: 但是不,在这种情况下,智能感知将无法正常工作。 如果您事先知道输出

  • 问题内容: 给定一个结构: 以及带有结构名称的字符串 要么 如何从字符串名称而不是结构创建结构的实例?我的想法是,我将使用链接到二进制文件中的所有结构创建一个应用程序,但根据字符串创建运行时实例。(某种元元) 问题答案: Go中没有类型的中央注册表,因此在一般情况下您无法提出要求。 您可以使用从字符串到对应于每种类型的值的映射来手动建立自己的注册表来支持这种功能。例如: 然后,您可以创建如下类型的

  • 在C中,如果值不能为NULL,则通常引用传递而不是指针。 假设我有一个具有以下签名的函数,该签名通常与字符串文字一起使用。 我想知道如何更改函数,使其接受引用(并且具有不接受NULL的优势)? > 另一个选项是

  • 问题内容: 我有2种方法,第一种方法显示我的JList(list)中的选定值,索引。我想做的就是将selectedValue- s发送到CreateMap方法。我尝试了这段代码,但是s变量为null。为什么? 问题答案: 我假设您有2个称为的String变量,其中一个全局变量,一个局部变量。 换线 至 它应该工作。确保您有一个名为的全局变量。

  • 本文向大家介绍PowerShell获取字符串长度的方法,包括了PowerShell获取字符串长度的方法的使用技巧和注意事项,需要的朋友参考一下 使用PowerShell可以很方便的计算字符串的长度。PowerShell是继承于Microsoft .NET Framework的,所以在.NET里面怎么获取到字符串的长度,在PowerShell中可以使用相同的方法。 我们知道在.NET中,可以使用St