81 lines
2.3 KiB
Java
81 lines
2.3 KiB
Java
|
|
||
|
|
||
|
import edu.princeton.cs.introcs.In;
|
||
|
import edu.princeton.cs.introcs.StdIn;
|
||
|
import edu.princeton.cs.introcs.StdOut;
|
||
|
|
||
|
/*************************************************************************
|
||
|
* Compilation: javac LookupIndex.java
|
||
|
* Execution: java LookupIndex movies.txt "/"
|
||
|
* Dependencies: ST.java Queue.java In.java StdIn.java StdOut.java
|
||
|
* Data files: http://algs4.cs.princeton.edu/35applications/aminoI.csv
|
||
|
* http://algs4.cs.princeton.edu/35applications/movies.txt
|
||
|
*
|
||
|
* % java LookupIndex aminoI.csv ","
|
||
|
* Serine
|
||
|
* TCT
|
||
|
* TCA
|
||
|
* TCG
|
||
|
* AGT
|
||
|
* AGC
|
||
|
* TCG
|
||
|
* Serine
|
||
|
*
|
||
|
* % java LookupIndex movies.txt "/"
|
||
|
* Bacon, Kevin
|
||
|
* Animal House (1978)
|
||
|
* Apollo 13 (1995)
|
||
|
* Beauty Shop (2005)
|
||
|
* Diner (1982)
|
||
|
* Few Good Men, A (1992)
|
||
|
* Flatliners (1990)
|
||
|
* Footloose (1984)
|
||
|
* Friday the 13th (1980)
|
||
|
* ...
|
||
|
* Tin Men (1987)
|
||
|
* DeBoy, David
|
||
|
* Blumenfeld, Alan
|
||
|
* ...
|
||
|
*
|
||
|
*************************************************************************/
|
||
|
|
||
|
public class LookupIndex {
|
||
|
|
||
|
public static void main(String[] args) {
|
||
|
String filename = args[0];
|
||
|
String separator = args[1];
|
||
|
In in = new In(filename);
|
||
|
|
||
|
ST<String, Queue<String>> st = new ST<String, Queue<String>>();
|
||
|
ST<String, Queue<String>> ts = new ST<String, Queue<String>>();
|
||
|
|
||
|
while (in.hasNextLine()) {
|
||
|
String line = in.readLine();
|
||
|
String[] fields = line.split(separator);
|
||
|
String key = fields[0];
|
||
|
for (int i = 1; i < fields.length; i++) {
|
||
|
String val = fields[i];
|
||
|
if (!st.contains(key)) st.put(key, new Queue<String>());
|
||
|
if (!ts.contains(val)) ts.put(val, new Queue<String>());
|
||
|
st.get(key).enqueue(val);
|
||
|
ts.get(val).enqueue(key);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
StdOut.println("Done indexing");
|
||
|
|
||
|
// read queries from standard input, one per line
|
||
|
while (!StdIn.isEmpty()) {
|
||
|
String query = StdIn.readLine();
|
||
|
if (st.contains(query))
|
||
|
for (String vals : st.get(query))
|
||
|
StdOut.println(" " + vals);
|
||
|
if (ts.contains(query))
|
||
|
for (String keys : ts.get(query))
|
||
|
StdOut.println(" " + keys);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|