如何在java中使用SQL实现接口Comparable,Collection.sort()?
这是一个简单的库项目。它必须通过要求用户基于关键字或体裁进行搜索,从数据库加载数据。 我有两节课。其中之一是图书班如何在java中使用SQL实现接口Comparable,Collection.sort()?,java,database,sorting,comparator,compareto,Java,Database,Sorting,Comparator,Compareto,这是一个简单的库项目。它必须通过要求用户基于关键字或体裁进行搜索,从数据库加载数据。 我有两节课。其中之一是图书班 包库; 导入java.sql.Date; 公共类书{ 字符串标题; 字符串作者; 日期; 字符串ISBN; 字符串格式; 字符串发布器; 浮动价格; 字符串[]关键字; 字符串[]输入阵列; 字符串输入; 公共图书(字符串标题参数、字符串作者参数、java.util.Date日期参数、字符串ISBN参数、, 字符串格式参数、字符串发布者参数、浮动价格参数、字符串关键字参数){ ti
包库;
导入java.sql.Date;
公共类书{
字符串标题;
字符串作者;
日期;
字符串ISBN;
字符串格式;
字符串发布器;
浮动价格;
字符串[]关键字;
字符串[]输入阵列;
字符串输入;
公共图书(字符串标题参数、字符串作者参数、java.util.Date日期参数、字符串ISBN参数、,
字符串格式参数、字符串发布者参数、浮动价格参数、字符串关键字参数){
title=title_参数;
作者=作者参数;
日期=(日期)日期参数;
ISBN=ISBN_参数;
格式=格式参数;
publisher=publisher_param;
价格=价格参数;
关键词=关键词参数拆分(“,”);
}
public void setUserInput(字符串userIn){
输入=用户输入;
}
private int getRelevance(字符串用户输入){
inputArray=userInput.split(“,”);
int num=0;
for(int i=0;i!=keywords.length;i++){
字符串in=inputArray[i];
for(int l=0;l!=keywords.length;l++){
if(in.equals(关键字[l]))
num++;
}
}
返回num;
}
公共国际比较(o册){
if(this.getRelevance(输入)>o.getRelevance(输入)){
返回1;
}else if(this.getRelevance(输入)
在第二个示例中,我想以正确的方式调用Collection.sort()和CompareTo(),以显示至少包含其中一个关键字的书籍。但它必须在顶部显示输入的关键字最多的书籍。
集合和比较部分
你现在不工作
package library;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.Scanner;
public class LibrarySearch {
static ArrayList<Book> books = new ArrayList<Book>();
ArrayList<LibrarySearch> genres = new ArrayList<LibrarySearch>();
static ArrayList<LibrarySearch> keywords = new ArrayList<LibrarySearch>();
public static void main(String[] args) {
load_data();
}
private static void load_data() {
Collections.sort(books, new Comparator<Book>() {
@Override
public int compare(Book first, Book second) {
if (first.compareTo(second) == 1) {
return 1;
} else if (first.compareTo(second) == -1) {
return -1;
}
return 0;
}
});
Connection connection = null;
Statement statement = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/library", "root", "123456");
statement = connection.createStatement();
System.out.println("Choose to search by keywords or genres");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
if (input.equals("keywords")) {
System.out.println("Enter your keywords: ");
String[] keyWordsInput = scanner.nextLine().split(",");
ResultSet result = null;
for (int i = 0; i != keyWordsInput.length; i++) {
result = statement
.executeQuery(" SELECT * FROM book WHERE keywords LIKE '%" + keyWordsInput[i] + "%'");
}
while (result.next()) {
int id = result.getInt("id");
String title = result.getString("title");
String author = result.getString("author");
Date date = result.getDate("date");
String ISBN = result.getString("ISBN");
String format = result.getString("format");
String publisher = result.getString("publisher");
float price = result.getFloat("price");
String keywords = result.getString("keywords");
System.out.println("ID = " + id);
System.out.println("TITLE = " + title);
System.out.println("AUTHOR = " + author);
System.out.println("DATE = " + date);
System.out.println("ISBN = " + ISBN);
System.out.println("FORMAT = " + format);
System.out.println("PUBLISHER = " + publisher);
System.out.println("PRICE = " + price);
System.out.println("KEYWORDS = " + keywords);
System.out.println("___________________________________________________________________________");
if (title.equals("I,Robot")) {
Book new_book = new Book(title, author, date, ISBN, format, publisher, price, keywords);
books.add(new_book);
}
if (title.equals("Catch-22")) {
Book new_book1 = new Book(title, author, date, ISBN, format, publisher, price, keywords);
books.add(new_book1);
}
if (title.equals("Pride and Prejudice")) {
Book new_book2 = new Book(title, author, date, ISBN, format, publisher, price, keywords);
books.add(new_book2);
}
if (title.equals("Gone with the Wind")) {
Book new_book3 = new Book(title, author, date, ISBN, format, publisher, price, keywords);
books.add(new_book3);
}
}
result.close();
statement.close();
connection.close();
} else if (input.equals("genres")) {
System.out.println("Enter your genres" + ": ");
String genresInput = scanner.nextLine();
ResultSet result = statement.executeQuery(
" SELECT * FROM books_genres JOIN book ON (book.id = books_genres.book_id) JOIN genre ON (genre.id = books_genres.genre_id) WHERE name LIKE '%"
+ genresInput + "%' ");
while (result.next()) {
int id = result.getInt("id");
String name = result.getString("name");
int book_id = result.getInt("book_id");
int genre_id = result.getInt("genre_id");
int id1 = result.getInt("id");
String title = result.getString("title");
String author = result.getString("author");
Date date = result.getDate("date");
String ISBN = result.getString("ISBN");
String format = result.getString("format");
String publisher = result.getString("publisher");
float price = result.getFloat("price");
String keywords = result.getString("keywords");
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("Book ID = " + id1);
System.out.println("TITLE = " + title);
System.out.println("AUTHOR = " + author);
System.out.println("DATE = " + date);
System.out.println("ISBN = " + ISBN);
System.out.println("FORMAT = " + format);
System.out.println("PUBLISHER = " + publisher);
System.out.println("PRICE = " + price);
System.out.println("KEYWORDS = " + keywords);
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("Genre ID = " + id);
System.out.println("Genre Name = " + name);
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("Book ID = " + book_id);
System.out.println("Genre ID = " + genre_id);
}
result.close();
statement.close();
connection.close();
}
else {
System.out.println("Sorry, wrong command");
}
} catch (SQLException ex) {
System.out.println("No successful connection");
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
}
catch (ClassNotFoundException x_not_found) {
System.out.println("Class not found");
}
}
}
包库;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.sql.Statement;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Comparator;
导入java.util.Date;
导入java.util.Scanner;
公共类图书馆搜索{
静态ArrayList books=新建ArrayList();
ArrayList流派=新的ArrayList();
静态ArrayList关键字=新建ArrayList();
公共静态void main(字符串[]args){
加载_数据();
}
专用静态空隙荷载_数据(){
Collections.sort(图书、新比较器(){
@凌驾
公共整数比较(第一册,第二册){
如果(第一个比较到(第二个)==1){
返回1;
}else if(第一个。比较到(第二个)=-1){
返回-1;
}
返回0;
}
});
连接=空;
Statement=null;
试一试{
Class.forName(“com.mysql.jdbc.Driver”);
connection=DriverManager.getConnection(“jdbc:mysql://localhost:3306/library“,”根“,”123456”);
statement=connection.createStatement();
System.out.println(“选择按关键字或类型搜索”);
扫描仪=新的扫描仪(System.in);
字符串输入=scanner.nextLine();
if(输入.等于(“关键字”)){
System.out.println(“输入关键字:”);
String[]关键字输入=scanner.nextLine().split(“,”);
ResultSet result=null;
for(int i=0;i!=关键字input.length;i++){
结果=语句
.executeQuery(“从书中选择*,其中包含“%”+关键字输入[i]+“%”等关键字);
}
while(result.next()){
int id=result.getInt(“id”);
String title=result.getString(“title”);
String author=result.getString(“author”);
日期=结果。获取日期(“日期”);
String ISBN=result.getString(“ISBN”);
字符串格式=result.getString(“格式”);
String publisher=result.getString(“publisher”);
浮动价格=result.getFloat(“价格”);
字符串关键字=result.getString(“关键字”);
System.out.println(“ID=”+ID);
System.out.println(“TITLE=“+TITLE”);
System.out.println(“AUTHOR=“+AUTHOR”);
System.out.println(“日期=”+日期);
System.out.println(“ISBN=“+ISBN”);
System.out.println(“FORMAT=“+FORMAT”);
System.out.println(“PUBLISHER=“+PUBLISHER”);
System.out.println(“PRICE=“+PRICE”);
System.out.println(“关键字=”+关键字);
系统.out.println(“uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
if(标题等于(“I,机器人”)){
Book new_Book=新书(书名、作者、日期、ISBN、格式、出版商、价格、关键字);
图书。添加(新图书);
}
如果(标题等于(“第22条军规”)){
Book new_book1=新书(书名、作者、日期、ISBN、格式、出版商、价格、关键字);
新增图书(新增图书1);
}
if(标题等同(“傲慢与偏见”)){
Book new_book2=新书(标题、作者、日期、ISBN、格式、出版商、价格、关键字);
新增图书(新增图书2);
}
如果(标题等于(“乱世佳人”)){
Book new_book3=新书(书名、作者、日期、ISBN、格式、出版商、价格、关键字);
新增图书(新增图书3);
package library;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.Scanner;
public class LibrarySearch {
static ArrayList<Book> books = new ArrayList<Book>();
ArrayList<LibrarySearch> genres = new ArrayList<LibrarySearch>();
static ArrayList<LibrarySearch> keywords = new ArrayList<LibrarySearch>();
public static void main(String[] args) {
load_data();
}
private static void load_data() {
Collections.sort(books, new Comparator<Book>() {
@Override
public int compare(Book first, Book second) {
if (first.compareTo(second) == 1) {
return 1;
} else if (first.compareTo(second) == -1) {
return -1;
}
return 0;
}
});
Connection connection = null;
Statement statement = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/library", "root", "123456");
statement = connection.createStatement();
System.out.println("Choose to search by keywords or genres");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
if (input.equals("keywords")) {
System.out.println("Enter your keywords: ");
String[] keyWordsInput = scanner.nextLine().split(",");
ResultSet result = null;
for (int i = 0; i != keyWordsInput.length; i++) {
result = statement
.executeQuery(" SELECT * FROM book WHERE keywords LIKE '%" + keyWordsInput[i] + "%'");
}
while (result.next()) {
int id = result.getInt("id");
String title = result.getString("title");
String author = result.getString("author");
Date date = result.getDate("date");
String ISBN = result.getString("ISBN");
String format = result.getString("format");
String publisher = result.getString("publisher");
float price = result.getFloat("price");
String keywords = result.getString("keywords");
System.out.println("ID = " + id);
System.out.println("TITLE = " + title);
System.out.println("AUTHOR = " + author);
System.out.println("DATE = " + date);
System.out.println("ISBN = " + ISBN);
System.out.println("FORMAT = " + format);
System.out.println("PUBLISHER = " + publisher);
System.out.println("PRICE = " + price);
System.out.println("KEYWORDS = " + keywords);
System.out.println("___________________________________________________________________________");
if (title.equals("I,Robot")) {
Book new_book = new Book(title, author, date, ISBN, format, publisher, price, keywords);
books.add(new_book);
}
if (title.equals("Catch-22")) {
Book new_book1 = new Book(title, author, date, ISBN, format, publisher, price, keywords);
books.add(new_book1);
}
if (title.equals("Pride and Prejudice")) {
Book new_book2 = new Book(title, author, date, ISBN, format, publisher, price, keywords);
books.add(new_book2);
}
if (title.equals("Gone with the Wind")) {
Book new_book3 = new Book(title, author, date, ISBN, format, publisher, price, keywords);
books.add(new_book3);
}
}
result.close();
statement.close();
connection.close();
} else if (input.equals("genres")) {
System.out.println("Enter your genres" + ": ");
String genresInput = scanner.nextLine();
ResultSet result = statement.executeQuery(
" SELECT * FROM books_genres JOIN book ON (book.id = books_genres.book_id) JOIN genre ON (genre.id = books_genres.genre_id) WHERE name LIKE '%"
+ genresInput + "%' ");
while (result.next()) {
int id = result.getInt("id");
String name = result.getString("name");
int book_id = result.getInt("book_id");
int genre_id = result.getInt("genre_id");
int id1 = result.getInt("id");
String title = result.getString("title");
String author = result.getString("author");
Date date = result.getDate("date");
String ISBN = result.getString("ISBN");
String format = result.getString("format");
String publisher = result.getString("publisher");
float price = result.getFloat("price");
String keywords = result.getString("keywords");
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("Book ID = " + id1);
System.out.println("TITLE = " + title);
System.out.println("AUTHOR = " + author);
System.out.println("DATE = " + date);
System.out.println("ISBN = " + ISBN);
System.out.println("FORMAT = " + format);
System.out.println("PUBLISHER = " + publisher);
System.out.println("PRICE = " + price);
System.out.println("KEYWORDS = " + keywords);
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("Genre ID = " + id);
System.out.println("Genre Name = " + name);
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("Book ID = " + book_id);
System.out.println("Genre ID = " + genre_id);
}
result.close();
statement.close();
connection.close();
}
else {
System.out.println("Sorry, wrong command");
}
} catch (SQLException ex) {
System.out.println("No successful connection");
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
}
catch (ClassNotFoundException x_not_found) {
System.out.println("Class not found");
}
}
}
public int compareTo(Book o) {
return this.getRelevance(input) - o.getRelevance(input);
}
Collections.sort(books, new Comparator<Book>() {
@Override
public int compare(Book first, Book second) {
return first.compareTo(second);
}
});