Java 在列表中查找子字符串并返回索引号

Java 在列表中查找子字符串并返回索引号,java,arrays,list,substring,Java,Arrays,List,Substring,我有一个列表,带有如下字符串: String One String Two String Three 现在我想得到子字符串“一”的索引号。我怎么能得到这个? 只有将其转换为数组,然后: public static int findInArray(Object[] arr, String searchName) { int i; for (i=0; i<arr.length; i++ ) { String test = arr[i].toString(); if (tes

我有一个列表,带有如下字符串:

String One
String Two
String Three
现在我想得到子字符串“一”的索引号。我怎么能得到这个? 只有将其转换为数组,然后:

public static int findInArray(Object[] arr, String searchName) {
int i;
for (i=0; i<arr.length; i++ ) { 
    String test = arr[i].toString();
    if (test.contains(searchName)) {
        //System.out.println("Substring found in:"+i);
        break;
    }
}
return i;
}
public static int findInArray(对象[]arr,字符串searchName){
int i;
对于(i=0;i列表已包含索引

for(inti=0;i
publicstaticintfind(列表列表,字符串搜索字符串){
对于(int i=0;i
尝试这种方法,您可以获取它的索引,或者返回-1,表示未找到。

public static int findInList(List<String> list, String searchName) {
    for(String str : list){
        if(str.indexOf(searchName) > -1){
          //System.out.println("Substring found in:"+i);
              return list.indexOf(str);
        }
    }
    return -1;
}
public static int findInList(列表列表,字符串searchName){
for(字符串str:list){
如果(str.indexOf(searchName)>-1){
//System.out.println(“在“+i”中找到的子字符串);
返回列表。indexOf(str);
}
}
返回-1;
}

这里可以使用列表而不是数组。您应该考虑的是如何对包含的检查进行短语化。从上面的示例中继续,如果您有一个元素为“字符串二十一”、“字符串2”、“字符串三”的列表,则您的代码将找到子串“一”。在索引0中,这可能不是您想要的。这可能是一个有点做作的示例,但这一点仍然成立。@AndreaLigios我也看到了您链接的这个问题,但没有找到我搜索的答案。有三个有趣的答案:您可以创建自己的ArrayList实现,或者您可以“标记化”您可以在插入值时使用KMP搜索应用于元素循环。或者您也可以在此处使用接受的答案:)这与下面的答案相同,但更糟糕的是:在为每个迭代执行cute时,您强制为no添加一个额外的昂贵的“indexOf”reason@iluxaString.contains(字符序列)实际上也调用String.indexOf(String)。str.indexOf()很好。我说的是您正在使用的list.indexOf()。@iluxa我明白您的意思了,也许下次发布代码时我需要更多地考虑性能问题。
public static int find(List<String> list, String searchString) {
    for(int i=0 ; i < list.size() ; ++i){
        if (list.get(i).contains(searchString)) {
            return i;
        }
    }
    return -1;
}
public static int findInList(List<String> list, String searchName) {
    for(String str : list){
        if(str.indexOf(searchName) > -1){
          //System.out.println("Substring found in:"+i);
              return list.indexOf(str);
        }
    }
    return -1;
}