Using random access files
Another alternative for storing the similarity matrix (and the utility matrix) is to use a RandomAccessFile object. This is illustrated in Listing 9.23:

Listing 9.23: Using a random access file
This little test program creates a random access file named inout at line 17. The constant W, defined at line 12, is the number of bytes (8) that Java uses to store a double value. We need that to locate our data in the file. The second argument to the constructor, the string rw, means that we will be both reading from and writing to the file. The loop at lines 18-20 writes 100 square roots into the file. The output from line 21 confirms that the file contains 800 bytes.
The loop at lines 23-27 uses direct access (random access) into the file, just like accessing a 100-element array. Each access requires two steps: seek the location to be read, and then read it. The seek() method sets the file's read-write pointer to the point in the file where access is to begin. Its argument...