Difference between revisions of "ArrayList Tutorial"

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
• 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

[Font] [Default] [Show] [Resize] [History] [Profile]

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

[Font] [Default] [Show] [Resize] [History] [Profile]

Problem 3 - Who's missing?

Line: 123 DOMDocument::loadXML(): Opening and ending tag mismatch: String line 42 and answer in Entity, line: 57
Line: 123 DOMDocument::loadXML(): Opening and ending tag mismatch: String line 42 and question in Entity, line: 58
Line: 123 DOMDocument::loadXML(): Premature end of data in tag answer line 35 in Entity, line: 58
Line: 123 DOMDocument::loadXML(): Premature end of data in tag question line 1 in Entity, line: 58

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.

[Font] [Default] [Show] [Resize] [History] [Profile]

Problem 5 – Use Map to count regions

Read in the file http://progzoo.net/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.

[Font] [Default] [Show] [Resize] [History] [Profile]

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>>();
```

[Font] [Default] [Show] [Resize] [History] [Profile]

Problem 7 - Process Log Files

A single line from the log file of sqlzoo.net http://progzoo.net/access_log looks like this:

```98.100.11.98 - - [26/Jan/2010:17:34:09 +0000] "GET /3.htm HTTP/1.1" 200 32441 "http://www.sqlzoo.net/3a.htm" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MDDR; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MS-RTC LM 8)"
```

Fields are separated by spaces. This line represents one “hit”

 98.100.11.98 is the ip address of the visitor - - means they were not authenticated 26/Jan/2010:17:34:09 +0000 Date and time according to my server /3.htm is the address of the web page visited (full address is http://sqlzoo.net/3.htm) 200 means the request was successful (404 is not found, 500 is server error) 32441 is the size of the page http://www.sqlzoo.net/3a.htm is the referrer – where the incoming link is coming from Mozilla/4.0 (compatible; MSIE 8.0; Windows… Identifies the operating system and browser

Questions - these cannot be answered on progzoo - they take too long

• Give the ip addresses of the top three users?
• What are the three most popular pages?
• Who are my 10 best referrers (don’t count sqlzoo references)?
• What proportion of my traffic is robotic? List all the robots and the number of hits. You should assume that all robots visit robot.txt and no humans visit that page.