gpt4 book ai didi

java - 如何按对象特定变量的字母顺序将对象添加到数组列表

转载 作者:行者123 更新时间:2023-12-02 01:44:06 27 4
gpt4 key购买 nike

我有一个图书馆程序,该程序中有一个 BorrowBookRecord Record 类和一个 Library 类。在库类中包含一个“borrowBook()”方法,当调用并成功使用该方法时,会创建一个 BorrowBookRecord 对象并将其添加到存储在 Library 类中的 BorrowBookRecords 数组列表中。我唯一的问题是我完全不知道如何使用borrowBook()方法来按字母顺序存储记录。我什至不知道从哪里开始。每条记录都有一个“学生用户名”作为其变量之一,我想用它来确定列表中对象的字母顺序。

这是图书馆类中的借书方法

 public boolean borrowBook(String librarianUsername, String studentUsername, String bookISBN){
User user = findUserByUsername(studentUsername);

if(checkPermissionTypeByUserNameBorrow(librarianUsername) && user.isOverBorrow() && checkPermissionTypeByUserNameReserve(studentUsername)){
if(checkIfAnyAvaliable(bookISBN)){
for(Book book: books){
if(book.getISBNNumber().equals(bookISBN) && book.checkAvaliable()){
book.modifyStatus(BookStatus.Reserved);
Date date = new Date();

BorrowBookRecord record = new BorrowBookRecord(studentUsername, bookISBN, book.getCopyNumber(), date);
borrowRecords.add(record);
/////>>>this is where record is made.
user.increaseNumberOfborrowedBooks();
break;
}
}
}
else{
throw new IllegalArgumentException("There are no books of that isbn avaliable to borrow");
}
}
else{
throw new IllegalArgumentException("Student cannot borrow anymore Books/librarian has wrong permissontype");
}
return true;
}

最佳答案

你可以做binary search用自定义比较器来查找插入点,只要保持顺序即可:

int index = Collections.binarySearch(borrowRecords, record,
Comparator.comparing(BorrowBookRecord::getStudentUsername));
if (index < 0) {
index = -(index + 1);
}
borrowRecords.add(index, record);

或者您可以让 BorrowBookRecord 实现 Comparable 而不是使用比较器。

关于java - 如何按对象特定变量的字母顺序将对象添加到数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53953378/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com