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