首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有在硬编码的情况下.contains才能工作

只有在硬编码的情况下.contains才能工作
EN

Stack Overflow用户
提问于 2020-12-02 11:40:12
回答 1查看 58关注 0票数 1

这是我的第一篇帖子,所以如果有什么不一样的地方请告诉我。

我一直在尝试创建一个方法,在二维ArrayList中查找搜索项的索引。这是我想出的代码:

代码语言:javascript
复制
import java.util.List;

public class Searcher {
public static int Search(List<List<String>> csv, String term) throws TermNotFoundException{
    if (csv.get(0).contains(term)) {
        return csv.get(0).indexOf(term);
    }
    else {
        throw new TermNotFoundException("Term not found");
    }
}

我现在遇到的问题是,当我硬编码我正在查看的ArrayList中的搜索词时,它工作得很好。如上面所示,当我尝试使用变量这个术语时,就会出现这个问题。

我所看到的特定ArrayList ( csv.get(0) )如下:

datetime_UTC,E1A,E1B,E1C,E2A,E2B,E3A,E3B,E3C,E3D,E4A,G1A,G2A,G2C,Zon

因此,如果我在"E1A“中硬编码,它就会找到它并返回1,如果我在主方法中调用函数,并为变量项填充相同的内容,这是行不通的。

我遗漏了什么吗?

编辑:详细说明,由于隐私原因,我不能公开整个二维数组。不过,我可以给你看更多的信息。

有人建议不要搜索两次,所以我修改了代码如下:

代码语言:javascript
复制
import java.util.List;
public class Searcher {
public static int Search(List<List<String>> csv, String term) throws TermNotFoundException{
    System.out.println(csv.get(0));
    System.out.println(term);
    int result = csv.get(0).indexOf(term);
    if (result != -1){
        return result;
    }
    else {
        throw new TermNotFoundException("Term not found");
    }
}

同样的问题也会发生。其中包括一些调试行,下面是输出:

代码语言:javascript
复制
[datetime_UTC, E1A, E1B, E1C, E2A, E2B, E3A, E3B, E3C, E3D, E4A, G1A, G2A, G2C, Zon]
E1A
TermNotFoundException: Term not found
at Searcher.Search(Searcher.java:12)
at Main.main(Main.java:10)

如果有帮助的话。这里是我调用函数的地方:

代码语言:javascript
复制
import java.io.FileNotFoundException;
import java.util.List;


public class Main {

public static void main(String[] args) throws FileNotFoundException {
    List<List<String>> csv = CSVReader.Read("standard_profiles.csv");
    try {
        System.out.println(Searcher.Search(csv, "E1A"));
    } catch (TermNotFoundException e) {
        e.printStackTrace();
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-12-02 11:56:40

代码语言:javascript
复制
public static void main(String[] args) throws Exception {
    List<String> list=new ArrayList<>();
    list.add("000");
    List<List<String>> listList=new ArrayList<>();
    listList.add(list);
    System.out.println(Search(listList, "000"));;
}

上面的代码返回0,我无法重现您的问题。但是,如果您的术语不在第一个列表中,它将无法工作,因为.get(0)意味着您只是在搜索List<List>中的第一个List

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65107390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档