Also if you want to go the route of Binary Searching: you can use either Collections.binarySearch or Arrays.binarySearch to use a Java-implemented Binary Search algorithm (or code your own for learning purposes only). You can also use

Java's implementation of a sorting algorithm to sort an array.

An alternative to sorting: if you control when elements are being added to this array, you can add them in a way to ensure that it is sorted. To do this, on your "add" method, you call the Binary Search algorithm on the array, and if it returns a negative number then you can add it at (-index + 1) where index is a negative number. This is because the Java-written Binary Search returns -index-1 if it does not find the element, where index is where the element would be if it existed in the array/collection. This way you shift the add time complexity to O(log(n)) and your searching time complexity is also O(log(n)), which means you take less performance hit when searching, but more performance hit when adding elements.