使用自己的类在ArrayList中查找字符串值

时间:2017-06-10 14:12:51

标签: java arrays search arraylist

这是我的第一个问题。我是一个学习商业管理,并开始学习java只是为了好玩。我正在芬兰大学做MOOC课程。我正在练习101.我必须为具有书籍搜索功能的图书馆编程。可以按标题,出版商或年份进行搜索。

我唯一的想法是(那些不起作用):

public ArrayList<Book> searchByPublisher(String publisher){
      ArrayList<Book> found = new ArrayList<Book>();
         if (bibo.contains(publisher)){
         found.add(bibo.get(bibo.indexOf(publisher)));              
            }            
         return found;

或:

public ArrayList<Book> searchByTitle(String title){
         ArrayList<Book> found = new ArrayList<Book>();
         String [] neueListe = new String[bibo.size()];
         for (int i = 0; i < bibo.size(); i++){
             neueListe[i] = bibo.get(i).toString();
             found.add(neueListe[i].toString());
         }
         return found;

"bibo"ArrayList的书籍。

我在互联网上搜索了想法和解决方案,当然在GitHub上遇到了几个。但是我发现的每个代码都使用了同样的想法:

for(Book i : this.bibo){
        if(StringUtils.included(i.title(), title)){
            found.add(i);
        }

在课程中从未使用StringUtils.included,我的NetBeans版本不知道它。

哪里是我的推理错误?

首先非常感谢: - )

4 个答案:

答案 0 :(得分:1)

StringUtils是第三方库形式Apache Commons Lang。如果你想使用这个类,你应该在Netbeans中将Apache Commons Lang添加到你的项目中 本教程介绍如何在Netbeans中添加Apache Commons: https://www.satollo.net/netbeans-apache-commons-and-commons-javadoc-for-auto-completion

答案 1 :(得分:0)

中的问题
public ArrayList<Book> searchByPublisher(String publisher){
      ArrayList<Book> found = new ArrayList<Book>();
         if (bibo.contains(publisher)){
             found.add(bibo.get(bibo.indexOf(publisher)));              
         }            
         return found;

是你问bibo是否包含String,而你应该询问它是否包含哪个发布者字段等于该字符串的书(searchByPubisher的输入)。

public ArrayList<Book> searchByPublisher(String publisher){
      ArrayList<Book> found = new ArrayList<Book>();
       for(Book b: bibo){
        if(b.getPublisher().equals(publisher))
         found.add(b);              
         }            
         return found;
}

searchByTitle功能可以类似地实现。

我还要提到你也可以使用Streams来完成这项工作。 (因为你正在学习java)以下内容应足以让你自己动手:

List<Book> found = 
    bibo.stream()
                .filter(b -> t.getPublisher().equals(publisher))
                .collect(toList());

希望这有帮助。

答案 2 :(得分:0)

我会这样做。

public ArrayList<Book> searchByTitle(String title){
     ArrayList<Book> found = new ArrayList<Book>();
     for (Book book: bibo) {
         if(book.title.contains(title)) {
              found.add(book);
         }
     }
     return found;

当您有更多java体验时,您还可以查看Java 8 Streams和过滤器函数。 Java 8 Streams example

答案 3 :(得分:0)

StringUtils是org.apache.commons.lang库中的一个类

  1. 从apache链接下载最新的二进制.zip文件(目前为commons-lang3-3.5-bin.zip): https://commons.apache.org/proper/commons-lang/download_lang.cgi
  2. 在NetBeans目录中创建“lib”文件夹 enter image description here
  3. 仅复制zip文件夹的.jar文件并将其传递到您创建的lib目录
  4. 打开NetBeans,右键单击您的项目&gt;礼物&gt;图书馆&gt;添加JAR /文件夹
  5. 选择“相对路径”并选择您粘贴到库文件夹中的jar文件