Contents

  1. ./comparisons/LinkedListForEach.java
  2. ./comparisons/LinkedListGet.java
  3. ./comparisons/LinkedListIterator.java
  4. ./examples/PetSurvey3.java

./comparisons/LinkedListForEach.java 1/4

[
top][prev][next]
package comparisons;

import java.util.*;

/**
 * Code to time for-each loop for LinkedList
 * 
 * @author sprenkle
 * 
 */
public class LinkedListForEach {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		final int SIZE = 1000000;
		List<Integer> list = new LinkedList<Integer>();
		for (int i = 0; i < SIZE; i++) {
			list.add(7);
		}
		int count = 0;
		for (Integer i : list) {
			count += i; // do something
		}
		System.out.println("Result: " + count);
	}

}

./comparisons/LinkedListGet.java 2/4

[
top][prev][next]
package comparisons;

import java.util.*;

/**
 * Code to time for loop using get for LinkedList. SLOW! Don't use.
 * 
 * @author sprenkle
 * 
 */
public class LinkedListGet {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		final int SIZE = 1000000;
		List<Integer> list = new LinkedList<Integer>();
		for (int i = 0; i < SIZE; i++) {
			list.add(7);
		}
		int count = 0;

		for (int i = 0; i < SIZE; i++) {
			count += list.get(i); // do something
		}
		System.out.println("Result: " + count);
	}

}

./comparisons/LinkedListIterator.java 3/4

[
top][prev][next]
package comparisons;

import java.util.*;

/**
 * Code to time iterator loop for LinkedList
 * 
 * @author sprenkle
 */
public class LinkedListIterator {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		final int SIZE = 1000000;

		List<Integer> list = new LinkedList<Integer>();
		for (int i = 0; i < SIZE; i++) {
			list.add(7);
		}
		int count = 0;
		for (Iterator<Integer> i = list.iterator(); i.hasNext();) {
			Integer value = i.next();
			count += value; // do something
		}
		
		System.out.println("Result: " + count);
	}

}

./examples/PetSurvey3.java 4/4

[
top][prev][next]
package examples;

import java.io.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

/**
 * This class represents a pet survey, keeping track of the number of votes cast
 * for a set of pets. The results are stored in a file.
 * 
 * Modified to use a Map.
 * 
 * @author CS209
 * 
 */
public class PetSurvey3 {

	private String filename;
	private int totalVotes = 0;

	Map<String, Integer> petToVotes;

	/**
	 * Creates a new Pet Survey, with data extracted from the given file name
	 * 
	 * @param filename
	 *            name of the file containing the data
	 */
	public PetSurvey3(String filename) {
		this.filename = filename;
		petToVotes = new HashMap<String, Integer>();
		importResults();
	}

	/**
	 * Read the survey data from the file
	 */
	private void importResults() {
		try {
			BufferedReader input = new BufferedReader(new FileReader(filename));

			String line;
			while ((line = input.readLine()) != null) {
				// line format: <animal> <numVotes>
				String data[] = line.split(" ");

				String animal = data[0];
				int numVotes = Integer.parseInt(data[1]);

				petToVotes.put(animal, numVotes);

				totalVotes += numVotes;
			}

			input.close();
		} catch (FileNotFoundException e) {
			System.out.println(filename
					+ ", containing the survey results, not found");
			e.printStackTrace();
		} catch (IOException e) {
			System.out
					.println("Something went wrong while importing survey results from"
							+ filename);
			e.printStackTrace();
		}

	}

	/**
	 * Store the current voting results into the file
	 */
	public void storeResults() {
		try {
			PrintWriter writer = new PrintWriter(filename);

			Set<String> keys = petToVotes.keySet();

			for (String animal : keys) {
				writer.println(animal + " " + petToVotes.get(animal));
			}

			writer.close();

		} catch (IOException e) {
			System.out.println("Error storing survey results to file "
					+ filename);
			e.printStackTrace();
		}

	}

	/**
	 * 
	 * @return the name of the file containing the survey results
	 */
	public String getFilename() {
		return filename;
	}

	/**
	 * 
	 * @return the array of Strings of animal names in the survey
	 */
	public String[] getAnimals() {
		// note that we don't want to give direct access to the animal names
		// because others could try to change them.
		Set<String> animals = petToVotes.keySet();
		String[] animalNames = new String[petToVotes.keySet().size()];
		animals.toArray(animalNames);
		return animalNames;
	}

	/**
	 * 
	 * @return the number of votes that have been cast.
	 */
	public int getTotalVotes() {
		return totalVotes;
	}

	/**
	 * Returns true iff the given pet is a valid vote
	 * 
	 * @param pet
	 * @return true iff the given pet is a valid vote
	 */
	public boolean validVote(String pet) {
		return petToVotes.containsKey(pet);
	}

	/**
	 * Casts a vote for the animal
	 * 
	 * @param animal
	 */
	public void castVote(String animal) {
		// update vote for the animal

		petToVotes.put(animal, petToVotes.get(animal) + 1);

		totalVotes++;
	}

	/**
	 * Display the results from the survey in a nicely formatted way.
	 */
	public void displayResults() {
		System.out.printf("%-11s%7s%13s\n", "Animal", "Votes", "Percentage");
		System.out.println("-------------------------------");

		String[] sortedPetNames = getAnimals();
		Arrays.sort(sortedPetNames);

		for (String animal : sortedPetNames) {
			int votes = petToVotes.get(animal);
			double pct = (double) votes / totalVotes * 100;
			System.out.printf("%-11s%7d%12.2f%%\n", animal, votes, pct);
		}
		System.out.println("-------------------------------");
		System.out.printf("%-12s%6d\n", "Total Votes:", totalVotes);
	}

	/**
	 * @param args
	 *            not used in this program.
	 */
	public static void main(String[] args) {
		final String mySurveyFile = "petSurvey.dat";
		PetSurvey3 survey = new PetSurvey3(mySurveyFile);

		System.out.println("Current Results: ");
		survey.displayResults();

		// Allow User to Vote
		Scanner scanner = new Scanner(System.in);
		System.out
				.print("What animal do you want to vote for as your favorite? (dog, cat, bird, snake, fish, other): ");

		String animalVoted = scanner.nextLine();
		scanner.close();

		if (!survey.validVote(animalVoted)) {

			System.out.println(animalVoted
					+ " is not a valid pet to vote for.  Please try again");
			System.exit(0);
		}

		survey.castVote(animalVoted);
		// Display updated results
		System.out.println("Updated Results: ");
		survey.displayResults();

		survey.storeResults();
	}

}

Generated by GNU enscript 1.6.4.