Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在多维数组列表中查找字符串 脚本_Java_String_List_Arraylist_Contains - Fatal编程技术网

Java 在多维数组列表中查找字符串 脚本

Java 在多维数组列表中查找字符串 脚本,java,string,list,arraylist,contains,Java,String,List,Arraylist,Contains,我有一个ArrayList来存储数据。 现在我试图检查ArrayList是否包含String for(String i : checkArtefakts){ System.out.println(i); if(headerAndBodyTestSuites.toString().contains(i)){ System.out.println(i + " " + headerAndBodyTestSuites.in

我有一个
ArrayList
来存储数据。
现在我试图检查
ArrayList
是否包含
String

for(String i : checkArtefakts){
            System.out.println(i);
            if(headerAndBodyTestSuites.toString().contains(i)){
                System.out.println(i + "  " + headerAndBodyTestSuites.indexOf(headerAndBodyTestSuites.contains(i)));
            }
        }
我实现了一个
toString()
方法,但它也没有解决我的问题

问题: 如何检查ArrayList的每个
元素([String,String,String,String])

如果它包含我的
搜索字符串

for(String i : checkArtefakts){
            System.out.println(i);
            if(headerAndBodyTestSuites.toString().contains(i)){
                System.out.println(i + "  " + headerAndBodyTestSuites.indexOf(headerAndBodyTestSuites.contains(i)));
            }
        }
为什么它甚至不能在我的
toString()方法中找到它呢

public String toString() {
    return "[XQ: " + xqueryFileName + "] [Path: " + testDir + "] [INP: " + firstInputFile
        + "] [INP: " + secondInputFile + "] [EXP: " + expectedFile + "]";

}
例子
ArrayList
其中
HeaderAndBodyTestcase
=

public HeaderAndBodyTestcase(final String xqueryFileName, final String testDir,
        final String firstInputFile, final String secondInputFile, final String expectedFile)

您可以做如下简单的事情:

    String searchedString = "SomeString";
    boolean found = false;
    for(String string : arrayList) {
          if (searchedString.equals(string)){
              found = true;
          }
    }
或者您可以使用java流API。(需要Java 8)

List List=new ArrayList();
列表。添加(“一些字符串1”);
列表。添加(“一些字符串2”);
添加(“一些字符串3”);
String searchString=“SOME_String…”;
if(list.stream().anyMatch((string)->string.equals(searchString))){
//字符串在列表中
}否则{
//该字符串不在列表中
}

其中arrayList包含字符串。我不确定你所说的ArrayList是什么意思,但这可能就是你要找的。

如果你使用的是
列表
,你可以使用
字符串[]
来检查
字符串是否包含你的
.contains()
方法

但是在您的例子中,它是一个
HeaderAndBodyTestcase
列表
,因此您需要在
HeaderAndBodyTestcase
类中实现一个
contains
方法,以检查是否有任何类成员与搜索到的
字符串
相等

这是您的代码应该如何编写的:

public boolean contains(String search){
    return this.xqueryFileName.equals(search) || this.testDir.equals(serach) || this.firstInputFile.equals(search) || this.secondInputFile.equals(search) || this.expectedFile.equals(search);
}

您需要在类中实现一个方法,该方法将查看搜索字符串是否为以下属性之一:

public boolean objectContainString(String search) {
     return Arrays.asList(xqueryFileName, testDir, firstInputFile, secondInputFile, expectedFile)
                  .contains(search);
}

并像这样使用:
boolean bool=list.stream().anyMatch(e->e.objectContainString(search))

您可以创建一些更好的数据结构,然后
数组列表([String,String,String,String])
什么类型是
[String,String,String,String]
?你有什么建议?@Abubakkar@TimBiegeleisen现在是时间
HeaderAndBodyTestcase
,它需要4个字符串。你想检查你的对象的四个字符串中的一个(对于每个列表)是否等于
搜索字符串
?你太不清楚了。@0x45啊哈,是否要检查搜索字符串是否是arraylist中任何字符串的子字符串?例如,[你好”,“再见”,“你好-再见”],然后您向它提供例如:“ello”,您将得到索引0处的字符串,以及2?是吗?我只想检查它是否包含字符串,我不关心索引。但是通常是的,而不是
list.stream().filter((string)->string.equals(searchString)).findFirst().isPresent()
使用
list.stream().anyMatch(…)
包含
而不是
equals
解决了我的问题。谢谢大家!@0x45太好了,很高兴它有帮助,是的,如果成员
字符串
s包含搜索的“字符串”中的其他字符,则使用
.contains
会更好。@0x45您可以考虑您喜欢的投票结果/谢谢;)我投了,但我的声望太低了>:-(@0x45我投票支持你的问题,这样你就可以得到超过15个代表,这样你可以随时投票支持;)