SET08112 ArrayList Interface Tutorial
In this tutorial you will use the ArrayList and the HashMap or TreeMap to solve some common problems. You will use methods such as:
Problem 1 - Sort a List
The file from http://progzoo.net/students.txt contains a list of students:
Whitaker, Forest Winslet, Kate De Havilland, Olivia Donat, Robert Douglas, Michael Dressler, Marie ...
Create a programme SortStudents.java that reads in this file and outputs the students in Alphabetical order.
- You can use an ArrayList to hold the students.
- ArrayList<String> names = new ArrayList<String>();
- You can use java.util.Collections.sort to sort the ArrayList
Problem 2 - List Routes
The file year1.txt contains a list of all students in year one. Each line contains the name of the student and the name of the route (programme) they follow separated by a tab.
Brando, Marlon BSC (HONS) DIGITAL MEDIA F/T Bridges, Jeff BSC (HONS) INTERACTIVE MEDIA DESIGN F/T Brody, Adrien BENG (HONS) COMPUTER SECURITY AND FORENSICS F/T
Write a program to read in this file and output a list of routes with no duplicates. You can use a program very similar to the one above – but this time:
line.split("\t")to get the route
name.contains(st)to add the route only if it is not already in the ArrayList
- You do not need to sort before output
Problem 3 - Who's missing?
The file present.txt contains those students from students.txt who attended a particular tutorial. We want a list of all those students who were not present.
Brody, Adrien Irons, Jeremy Spacek, Sissy
How to do this…
- Create an array list called present
- Open the file present.txt and add every line to the ArrayList present
- Open the file student.txt
- For each line in the file – if that student is not in present print the name.
if (!present.contains(line)) System.out.println(line);
Problem 4 - Count Routes
Use the file year1.txt to print a list of all the routes in alphabetical order. We also want a count of how many students are in each route.
BENG (HONS) COMPUTER NETWORKS AND DISTRIBUTED SYSTEMS F/T 10 BENG (HONS) COMPUTER SECURITY AND FORENSICS F/T 28 BENG (HONS) COMPUTING F/T 22 BENG (HONS) EMBEDDED COMPUTER SYSTEMS F/T 1 ...
How to do this:
- See the section “Use Map to aggregate” from the lecture
- Use the HashMap structure to map String to Integer, the String will be the route name, the Integer will be the number of students
- HashMap supports methods put and get
- You can use two passes to process get the answer.
- On the first pass run over the list and put the value 0 against every route you encounter.
- On the second pass use put to add 1 to each route you encounter.
- It is better to use a single pass:
- For each route if the key exists then +1 of the value, if the key does not exist then put 1.
Problem 5 – Use Map to count regions
Read in the file bbc.txt and output a list of region and the number of countries in each. This problem is just like the previous problem. If you use a TreeMap in place of a hash map then the output will be in order.
Problem 6 – Use Map to find associates
Read in the file bbc.txt and output a list of countries by region. One way to do this is to build up a list of countries for each region. To do that you could use a structure such as:
TreeMap<String,ArrayList<String>> region = new TreeMap<String,ArrayList<String>>();