如何在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);
    }
});