Java 查看一个Arraylist中的关键字是否位于另一个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

我已经为用户输入的关键字获得了一个ArrayListof字符串,现在我试图看看这些关键字是否存在于另一个arraylist的单独元素中,这是一个图书目录。我的代码如下所示,编译器在编译以下代码时一直说找不到符号:

编辑:我对代码做了如下更改

 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;
      }