I don't think the question is informative enough to answer in a good way. OO is, first and foremost, about where to draw the line. If you model a book, and it should have and ISBN, that's fine, but an OO fanatic would also have you equip the Book with an array of Leaf-s, each Leaf having exactly two Page-s, each Page having a PageNumber, and an array of Line-s, each Line being an array of chars. Or maybe a String. But then, a String is not really good OO in this case.
You must take a decision about where to stop modelling, and it is important to realize that you are not modelling the real word, but rather a metaphor negotiationg the mind of the (second) programmer and the machine. What you are doing is at the same time explaining something to the machine and to a reader. OO can be a good tool in this, but it can also be used to obstruct. Be careful! Keep it simple!
If the only thing you need is to lookup a title based on an ISBN, then, keep it simple:
Map<String, String> indexedBookList;
If you suspect that the functionality may grow, you should maybe create a
class Book {
String title;
String isbn;
String author;
}
and keep all your books in a
List<Book> bookList;
Then again, it might be that your project grows from this static little thing into something that has to communicate with an SQL database, that updates occationally and out of your control. Then it might be better, for readability, to keep it simple, and model the database, rather than trying to model the real world.
Programming is about telling a machine what to do, and at the same time telling other people, what we are trying to tell the machine to do. The most important feature in your code, is that it is readable to the programmer that needs to understand it. In a year, that could be you.