Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 哈希库代码帮助_Java_Regex_Arraylist_Project - Fatal编程技术网

Java 哈希库代码帮助

Java 哈希库代码帮助,java,regex,arraylist,project,Java,Regex,Arraylist,Project,我正试图找出我的代码出了什么问题。这不是我喜欢的工作方式,我想知道是否有人可以帮助我。它应该做的是存储书籍标题和作者的散列值,并确保不会在library ArrayList中插入重复项。它只是不工作,我不知道如何修复它 import java.util.*; @SuppressWarnings("unused") public class HashTester { public static void main(String [] args){ /*card.ja

我正试图找出我的代码出了什么问题。这不是我喜欢的工作方式,我想知道是否有人可以帮助我。它应该做的是存储书籍标题和作者的散列值,并确保不会在library ArrayList中插入重复项。它只是不工作,我不知道如何修复它

    import java.util.*;
@SuppressWarnings("unused")
public class HashTester {
    public static void main(String [] args){
        /*card.java code
        Card x = new Card("jack", "hearts");

        x.getHash();
        x.getEnglish();
        */
Library k = new Library();
ArrayList<BookHash> library = new ArrayList<BookHash>();

         BookHash y = new BookHash("moby dick", "jk rowling");
         BookHash y1 = new BookHash("harry potter", "lalala");
         BookHash y2 = new BookHash("moby dick", "jk rowling");
         k.listBooks();
         k.checkBook(y);
         k.checkBook(y1);
         k.checkBook(y2);
         k.listBooks();




    }




}


---------------

import java.util.*;
public class Library {


    public static ArrayList<BookHash> library = new ArrayList<BookHash>();
     BookHash g = new BookHash("moby dick", "jk rowling");

    public void checkBook(BookHash x){

        for(int i = 0; i <= library.get(i).getHashTitle() -1; i++){
            if(library.get(i + 1).getHashTitle()==(library.get(0).getHashTitle()) 
                    && library.get(i + 1).getHashAuthor() == (library.get(0).getHashAuthor())){
                System.out.println("book is used");
            }

            library.add(1, x);
        }
    }
    public void listBooks(){
        library.add(g);
        for(int i= 0; i< library.size(); i++){
            System.out.print( library.get(i).getHashTitle());
            System.out.print( library.get(i).getHashAuthor());

    }




}
import java.util.*;
@抑制警告(“未使用”)
公共类哈希测试仪{
公共静态void main(字符串[]args){
/*java代码
卡x=新卡(“杰克”、“红心”);
x、 getHash();
x、 getEnglish();
*/
库k=新库();
ArrayList库=新的ArrayList();
BookHash y=新BookHash(“白鲸”、“jk罗琳”);
BookHash y1=新的BookHash(“哈利波特”、“拉拉”);
BookHash y2=新的BookHash(“白鲸”、“jk罗琳”);
k、 清单();
k、 支票簿(y);
k、 支票簿(y1);
k、 支票簿(y2);
k、 清单();
}
}
---------------
导入java.util.*;
公共班级图书馆{
公共静态ArrayList库=新建ArrayList();
BookHash g=新BookHash(“白鲸”、“jk罗琳”);
公共作废支票簿(BookHash x){

对于(int i=0;i类BookHash需要覆盖类对象的hashCode()和equals()方法。通常,您可以使用IDE生成这些方法

然后可以使用ArrayList的contains(Object o)方法检查对象是否已包含。=>缩短checkBook方法

或者使用集合。集合只能包含每个对象一次。如果向集合中添加对象,集合将检查该对象是否已存在。=>无需使用checkBook方法

Java 8文档集:

例如,您可以使用HashSet

HashSet的Java 8文档:

我发现你的支票簿方法有错误。 将字符串与==而不是.equals()进行比较。 如果比较的两个对象中有一个可能为空,请使用对象的equals方法。 见:

应该是这样的:

if(Objects.equals(library.get(i + 1).getHashTitle(), library.get(0).getHashTitle()) 
   && Objects.equals(library.get(i + 1).getHashAuthor(), library.get(0).getHashAuthor()) {
       System.out.println("book is used");
}
但是覆盖hashCode和equals方法并使用ArrayList的contains方法或使用HashSet要容易得多


我希望这会有所帮助。:-

您是否尝试过调试它?您打算使用BookHash中的hashCode方法执行什么操作?
if(Objects.equals(library.get(i + 1).getHashTitle(), library.get(0).getHashTitle()) 
   && Objects.equals(library.get(i + 1).getHashAuthor(), library.get(0).getHashAuthor()) {
       System.out.println("book is used");
}