Java 查看一个Arraylist中的关键字是否位于另一个Arraylist的元素中
我已经为用户输入的关键字获得了一个ArrayListof字符串,现在我试图看看这些关键字是否存在于另一个arraylist的单独元素中,这是一个图书目录。我的代码如下所示,编译器在编译以下代码时一直说找不到符号: 编辑:我对代码做了如下更改Java 查看一个Arraylist中的关键字是否位于另一个Arraylist的元素中,java,Java,我已经为用户输入的关键字获得了一个ArrayListof字符串,现在我试图看看这些关键字是否存在于另一个arraylist的单独元素中,这是一个图书目录。我的代码如下所示,编译器在编译以下代码时一直说找不到符号: 编辑:我对代码做了如下更改 ArrayList<Book> catalogue; //was defined in another class ArrayList<String> keywords;// was created in a driver cla
ArrayList<Book> catalogue; //was defined in another class
ArrayList<String> keywords;// was created in a driver class through user input
public ArrayList<String> getTitlesContainingKeyword(String keyword){
ArrayList<String>results = new ArrayList<>();
for (int i = 0; i < keywords.size(); i ++) {
for (int j = 0; j < catalogue.size(); j ++){
if (catalogue.get(j).contains(keywords.get(i))) // the contains in this line is giving the error
{
results.add(j);
}
}
}
return results;
}
ArrayList目录//是在另一个类中定义的
ArrayList关键字;//是通过用户输入在驱动程序类中创建的
公共ArrayList GetTitleContainingKeyword(字符串关键字){
ArrayListresults=新的ArrayList();
对于(int i=0;i
看来主要的问题是目录是一个book arraylist,关键字是一个string arraylist您只需检查关键字是否存在。为什么要使用get方法?只需将字符串完全传递给contains 我的意思是:
1.获取关键字。
2.通过调用关键字ArrayList上的contains()检查它是否确实是有效的关键字。如果返回false,则不要继续搜索目录。
3.如果是,请检查每个目录并调用其包含,以查看该目录中是否包含关键字 代码片段中的逻辑似乎有误
public String getTitlesContainingKeyword(String keyword){
for (int i = 0; i < keywords.size(); i ++) {
for (int j = 0; j < catalogue.size(); j ++){
if (catalogue.get(j).contains(keywords.get(i))) {
results.add(j); // << who is results
}
}
}
return results;
}
参数
关键字
在您的方法中有什么用途?哪一行给出了错误?程序中声明的各种变量在哪里?什么是结果
。您所说的ArrayList的类型是什么?请尝试添加更多详细信息我正在使用get方法,因为它是一个更大类的一部分,并且已设置,我应该添加代码来检查关键字是否包含在Catalog arraylist中,然后它们是否显示关键字以及包含关键字的Catalog中的元素您的逻辑太复杂了这么简单的任务让人费解。只需使用ArrayList的contains()。为什么循环?我的想法是循环arraylist,然后检查第一个关键字是否在目录arraylist的每个条目中,依此类推,然后将目录中包含该关键字的所有元素放入结果arraylist No。如果它不是一个关键字,为什么还要麻烦检查目录?我更改了代码以反映那些建议的更改,但目录被声明为arraylist书而不是字符串,所以这似乎是问题所在。目录数组列表的类型是什么?是ArrayList
还是ArrayList
。请用detailshow更改您的问题。我已经更新了答案,假设目录
是字符串的数组列表
public ArrayList<String> getTitlesContainingKeyword(String keyword){
ArrayList<String>results = new ArrayList<>();
for (int i = 0; i < keywords.size(); i ++) {
for (String catLog: catalogue){
if (catLog.contains(keywords.get(i))) {
results.add(catLog);
}
}
}
return results;
}