[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/biblelamp/JavaExercises/master/Java%202/HW3Lesson.java [Back]  [Original]

/**
 * Java. Level 2. Lesson 3. Example of homework
 *
 * @author Sergey Iryupin
 * @version 0.3.4 dated Dec 30, 2017
 */
import java.util.*;
import java.io.IOException;
import java.io.FileWriter;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.nio.charset.StandardCharsets;
import javax.xml.stream.*;
//import hw3.*; // old variant homework

class HW3Lesson {

    static final String TEXT = "If you really want to learn, and you want " +
        "to learn more quickly and more deeply, pay attention to how you " +
        "pay attention. Think about how you think. Learn how you learn.";
    static final String FILE_NAME = "lesson3text.txt";

    public static void main(String[] args) throws IOException {

        // 1 task
        System.out.println("1. Counting words:");
        ountWords(TEXT);

        // read file to list
        List lines =
            Files.readAllLines(Paths.get(FILE_NAME), StandardCharsets.UTF_8);

        // convert List to Array and Array to string
        String[] strings = new String[lines.size()];
        strings = lines.toArray(strings);
        ountWords(Arrays.toString(strings));

        // 2 task
        System.out.println("\n2. Phone book:");
        testPhoneBook();
    }

    static void ountWords(String text) {
        Integer value;
        Map hm = new TreeMap(); // HashMap better for speed
        String[] words = text.toLowerCase().split("\\W+");
        for (String word : words) {
            //value = hm.get(word);
            //hm.put(word, ((value == null)? 1 : value + 1));
            hm.put(word, hm.getOrDefault(word, 0) + 1);
        }
        System.out.println(hm);
        System.out.println("The phrase has " + words.length + " words and " +
            hm.size() + " non-repeated words.");
    }

    static void testPhoneBook() {
        SimplePhoneBook spb = new SimplePhoneBook();
        spb.add("Mathew", "863 233 3301");
        spb.add("Mark", "863 212 1102");
        spb.add("Luke", "863 243 2803");
        spb.add("John", "863 240 2704");
        spb.add("Luke", "863 248 4512");
        System.out.println("Phones of Luke's:");
        System.out.println(spb.get("Luke"));
        System.out.println(spb);
        spb.exportXMLManually("phonebook.xml");
        /*
        PhoneBook pb = new PhoneBook();
        pb.addRecord("John", new PhoneRecord("234-22-12", "john@mail.com"));
        pb.addRecord("Smith", new PhoneRecord("234-22-21", "smith@mail.com"));
        pb.addRecord("Mike", new PhoneRecord("233-12-12", "mike@mail.com"));
        pb.addPhone("Mike", "+1 234 567-89-00");
        System.out.println(pb.getPhonesByName("Mike")); // found
        System.out.println(pb.getPhonesByName("Bill")); // not found
        System.out.println(pb.getEmailsByName("Smith")); // found
        System.out.println(pb.getEmailsByName("Joseph")); // not found
        */
    }
}

class SimplePhoneBook {
    Map pb;

    SimplePhoneBook() {
        pb = new HashMap();
    }

    void add(String name, String phone) {
        pb.put(phone, name);
    }

    List get(String name) {
        List list = new ArrayList();
        for (Map.Entry entry : pb.entrySet())
            if (name.equals(entry.getValue()))
                list.add(entry.getKey());
        return list;
    }

    void export(String fileName) {
        try (FileWriter file = new FileWriter(fileName)) {
            file.write(toString());
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    // @see https://docs.oracle.com/cd/E13222_01/wls/docs100/xml/stax.html
    // @see http://technojeeves.com/index.php/54-serialize-a-java-collection-with-the-streaming-api
    // write using the Streaming API for XML (StAX)
    void exportXML(String fileName) {
        try (BufferedWriter file = new BufferedWriter(
                new OutputStreamWriter(
                new FileOutputStream(fileName), "UTF8"))) {
            XMLStreamWriter xsw = XMLOutputFactory
                .newInstance()
                .createXMLStreamWriter(file);

            // write the default XML declaration
            xsw.writeStartDocument("utf-8", "1.0");
            xsw.writeCharacters("\n");

            // write a comment
            xsw.writeComment("This is a phone book");
            xsw.writeCharacters("\n");

            // write the root element "phones"
            xsw.writeStartElement("phones");
            xsw.writeCharacters("\n");
            
            // write all records as list of entry
            for (Map.Entry e : pb.entrySet()) {
                xsw.writeCharacters("\t");
                xsw.writeStartElement("phone");
                xsw.writeAttribute("name", e.getValue());
                //xsw.writeAttribute("key", e.getKey());
                xsw.writeCharacters(e.getKey());
                xsw.writeEndElement();
                xsw.writeCharacters("\n");
            }
            xsw.writeEndElement();
            xsw.writeCharacters("\n");
            xsw.writeEndDocument();
            xsw.close();
        } catch (XMLStreamException | IOException ex) {
            System.out.println(ex.getMessage());
        }
    }

    // write to XML manually
    void exportXMLManually(String fileName) {
        try (BufferedWriter file = new BufferedWriter(
                new OutputStreamWriter(
                new FileOutputStream(fileName), "UTF8"))) {

            // write the default XML declaration, comment and root element
            file.write("\n");
            file.write("\n");
            file.write("\n");
            // write all records as list of entry
            for (Map.Entry e : pb.entrySet())
                file.write("\t" +
                    e.getKey() + "\n");
            file.write("\n");
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }
    }

    @Override
    public String toString() {
        return pb.toString();
    }
}

Web Proxy Viewer  |  New URL  |  Original Page