这是我的第一篇帖子,所以如果有什么不一样的地方请告诉我。
我一直在尝试创建一个方法,在二维ArrayList中查找搜索项的索引。这是我想出的代码:
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,如果我在主方法中调用函数,并为变量项填充相同的内容,这是行不通的。
我遗漏了什么吗?
编辑:详细说明,由于隐私原因,我不能公开整个二维数组。不过,我可以给你看更多的信息。
有人建议不要搜索两次,所以我修改了代码如下:
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");
}
}同样的问题也会发生。其中包括一些调试行,下面是输出:
[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)如果有帮助的话。这里是我调用函数的地方:
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();
}
}发布于 2020-12-02 11:56:40
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
https://stackoverflow.com/questions/65107390
复制相似问题