Difference between revisions of "ArrayList Tutorial"
(→Problem 1 - Sort a List) |
(→Problem 2 - List Routes) |
||
Line 65: | Line 65: | ||
==Problem 2 - List Routes== | ==Problem 2 - List Routes== | ||
<question className="SortStudents" title="Using Sort" copyfile="year1.txt"> | <question className="SortStudents" title="Using Sort" copyfile="year1.txt"> | ||
− | 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. | + | The file http://progzoo.net/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 | Brando, Marlon BSC (HONS) DIGITAL MEDIA F/T | ||
Bridges, Jeff BSC (HONS) INTERACTIVE MEDIA DESIGN F/T | Bridges, Jeff BSC (HONS) INTERACTIVE MEDIA DESIGN F/T | ||
Line 118: | Line 118: | ||
</answer> | </answer> | ||
</question> | </question> | ||
+ | |||
==Problem 3 - Who's missing?== | ==Problem 3 - Who's missing?== | ||
<question className="SortStudents" title="Using Sort" copyfile="students.txt present.txt"> | <question className="SortStudents" title="Using Sort" copyfile="students.txt present.txt"> |
Revision as of 09:29, 1 February 2012
Contents
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:
- java.util.Collections.sort
- add
- get
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 http://progzoo.net/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:
- Use
line.split("\t")
to get the route - Use
name.contains(st[1])
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>>();