I am currently working on an android game that revolves around words. There is a database in the background that contains the words along with an integer and 2 more substrings, containing approximately 300000 rows. I load the words on starting the game into an ArrayList of Word objects(populating from the database). Currently I am using sequential search.
My question is this: Given that I have to search the list by different criteria, for example by definition(like book) or integer(which is a description of the word), and that I have to make many searches during the lifetime of the game(and only searches, so no inserts etc.), what is the most efficient way to search this list by different criteria without creating another list, as we have to save memory space given that this is an android game?
I was thinking about using binary search, but I'm lost on the criteria part and my only solution is to create 2 lists since I need to search by name and by the integer description at different times unrelated to each other.
Thanks in advance.
EDIT: database entry example
word | integer | string | string
--------------------------------
book | 2 | xd | xp