01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package algs35;
import stdlib.*;
/* ***********************************************************************
 *  Compilation:  javac LookupCSV.java
 *  Execution:    java LookupCSV file.csv keyField valField
 *  Dependencies: ST.java In.java StdIn.java StdOut.java
 *  Data files:   http://algs4.cs.princeton.edu/35applications/DJIA.csv
 *                http://algs4.cs.princeton.edu/35applications/UPC.csv
 *                http://algs4.cs.princeton.edu/35applications/amino.csv
 *                http://algs4.cs.princeton.edu/35applications/elements.csv
 *                http://algs4.cs.princeton.edu/35applications/ip.csv
 *                http://algs4.cs.princeton.edu/35applications/morse.csv
 *
 *  Reads in a set of key-value pairs from a two-column CSV file
 *  specified on the command line; then, reads in keys from standard
 *  input and prints out corresponding values.
 *
 *  % java LookupCSV amino.csv 0 3     % java LookupCSV ip.csv 0 1
 *  TTA                                www.google.com
 *  Leucine                            216.239.41.99
 *  ABC
 *  Not found                          % java LookupCSV ip.csv 1 0
 *  TCT                                216.239.41.99
 *  Serine                             www.google.com
 *
 *  % java LookupCSV amino.csv 3 0     % java LookupCSV DJIA.csv 0 1
 *  Glycine                            29-Oct-29
 *  GGG                                252.38
 *                                     20-Oct-87
 *                                     1738.74
 *
 *
 *************************************************************************/

public class LookupCSV {
  public static void main(String[] args) {
    args = new String[] { "data/ip.csv", "0", "1" }; StdIn.fromString ("www.google.com");
    //        args = new String[] { "data/ip.csv", "1", "0" }; StdIn.fromString ("216.239.41.99");
    //        args = new String[] { "data/amino.csv", "0", "3" }; StdIn.fromString ("TTA");

    int keyField = Integer.parseInt(args[1]);
    int valField = Integer.parseInt(args[2]);

    // symbol table
    ST<String, String> st = new ST<>();

    // read in the data from csv file
    In in = new In(args[0]);
    while (in.hasNextLine()) {
      String line = in.readLine();
      String[] tokens = line.split(",");
      String key = tokens[keyField];
      String val = tokens[valField];
      st.put(key, val);
    }

    while (!StdIn.isEmpty()) {
      String s = StdIn.readString();
      if (st.contains(s)) StdOut.println(st.get(s));
      else                StdOut.println("Not found");
    }
  }
}