Java application using GUI, different data structures, and algorithms