Should we use ArrayList or Vector?

Should we use ArrayList or Vector in web programming environment?
thanks,

I used to use ArrayList everywhere since it was a newer class and recommended in books, but use Vector now because it is used in several key environments: Java 1 (Web browsers), Swing and J2ME. In Java2, Vector was retrofitted to use the Collections framework, so Vector implements List.
Anyway, you should probably deal with only the List interface anyway so whichever you decide will be localized. That way, if Sun suddenly stops supporting Vector, you will only need to make a change in one place.
List mylist = new Vector();

Similar Messages

  • Use ArrayList vs Vector

    I'm writing an application that accept multiple connections.
    To check the connections I have a thread that check these connections if they are in use, i iterate over these connections and if they are not used for a periode of time, i close this connection and remove them from my list and iterate further.
    If i use a Vector to collect the connections, everything goes fine, but if i use a Arraylist, i get a concurrentmodificationexception, i now, this is normal, because the failfast of the iterator, so, i used the synchronize method of collections, but i got the same exception,
    any suggestions to make ik work with an ArrayList.

    If i can make it work with a list i'me happy, i will try it with a linked list, thx
    Heres the code of the methode
    public void run() {
    while (true) {
    try {
         Enumeration enum = null;
         sleep(frequency);
         long currTime = System.currentTimeMillis();
         enum = TimeoutInputStream.instanceList.elements();
         while (enum.hasMoreElements()) {
    TimeoutInputStream stream =
         (TimeoutInputStream) (enum.nextElement());
    //ITERATOR FAILS HERE
         long lastActive = stream.getLastActive();                    System.out.println(".");
         if (lastActive == 0) {
              stream.setLastActive(currTime);
         } else if ((currTime - lastActive) > timeout) {
              stream.abort();
    //HERE DO I REMOVE THE CONNECTION OUT OF THE LIST
              System.out.println("Timeout: input stream aborted");
         } catch (InterruptedException e) {
              System.out.println(e);

  • Should I use the short vector types for C++ AMP?

    Hello, is there any performance reason to use short vector types (as outlined in http://blogs.msdn.com/b/nativeconcurrency/archive/2012/04/03/short-vector-types-in-c-amp.aspx)
    in my C++ AMP kernels that will be confined to execution only on the GPU? Or is this simply to clean up the syntax a little?

    Hello LKeene.
    This would depend on the GPU architectures that you are running on. For example, older AMD hardware (pre-GCN i.e. 5xxx and 6xxx series) was VLIW at the ALU level, so it might have benefited from the explicit vector usage as the compiler wouldn't have had
    to work as hard to find elements to pack. That being said, more modern hardware would not directly benefit. If you think that the syntax ends up being cleaner, go for it (that's still a win!). I hope this helps. Cheers!

  • Reading Individual Lines of Text Into An ArrayList or Vector From A File

    I am trying to read each individual line of text of a .txt file into an ArrayList or Vector. I seem to get the same results no matter which Object I am using (ArrayList or Vector). The text file is a comma-delimited text file to be used as a database. I want to separate each line as an individual record then dump it into an ArrayList or Vector and have them loop through a StringTokenizer() class so that I can be sure each line has the correct number of fields before I commit it to a serialization file. Currently, the proper amount of records seems to be forming in the initial part of the program, I am just remiss at properly placing them in the Vector, or StringTokenizer classes so I can further manipulate them. I'm using the LineNumberReader class to get line numbers to use as record numbers and for loop indexes. I'm not sure (obviously) if this is a correct way to do it or not.
    Any help is greatly appreciated in advance.
    Thanks for all your time.
    int n = 0;
              try {
                    * read each individual line and count it as a separate record. 
                    * place each record into an array or may be a string if it has 9 tokens
                    * if a record hasn't got 9 tokens, it isn't a record
                    * place each array or string into a Vector
                   in = new LineNumberReader(new FileReader(filename));
                             while ((record = in.readLine()) != null) {
                             n = in.getLineNumber();
                             rawData = new Vector();     
                             for (int i = 0; i < n; i++) {
                                  rawData.add(record);     
                             if (record == null)
                             break;
    *The following System.out.println() statement shows that all lines are correctly retrieved from the text file
    *as separate records
                        System.out.println("Record No. " + n +  "= " + record);     
                   //Debug
    /** When these print lines execute it reveals that only the last record has been inserted into the Vector as
    *    many times as I have records in the text file.
                        System.out.println("Number of Records = " + n);
                        System.out.println("VectorSize = " + rawData.size());
                        System.out.println("First rawDataElement = " + rawData.firstElement());
                        System.out.println("Second rawDataElement = " + rawData.get(1));
                        System.out.println("Third rawDataElement = " + rawData.get(2));
                        System.out.println("Fourth rawDataElement = " + rawData.lastElement());
    *  Next run each record through a StringTokenizer to be sure that there the correct number of fields present
    *  If it contains the correct number of fields, dump it into an alternate ArrayList or Vector.
    *  As it is now, the StringTokenizer gives a NullPointerException
                        for (int i = 0; i < n; i++) {
                             StringTokenizer recordSet = new StringTokenizer((String) table.get(n), ",");
                                 while (recordSet.hasMoreTokens()) {
                                     if (recordSet.countTokens() == 9) {
                                           data = new Vector();
                                           data.add((Object) recordSet.nextToken(","));
                                           System.out.println("Vector data size = " + data.size());
                                           System.out.println("Second dataElement = " + data.get(0));
                            System.out.println("String Tok recordSet = " + recordSet.countTokens());                                  System.out.println("Number of Records = " + n);
                        System.out.println("First dataElement = " + data.firstElement());
                        System.out.println("Second dataElement = " + data.get(0));
                        System.out.println("Third dataElement = " + data.get(2));
                        System.out.println("Fourth dataElement = " + data.lastElement());
                   } catch (FileNotFoundException e) {
                        System.out.println(e);
                   } catch (IOException e) {
                        System.out.println(e);
         }

    I think your logic is broken.
    rawData = new Vector();
    creates a new instance of Vector for every record.
    Your add() within a for loop adds the same record to the Vector n times. I think what you really want is something like this:in = new LineNumberReader(new FileReader(filename));
    rawData = new Vector();
    while ((record = in.readLine()) != null) {
        n = in.getLineNumber();
        rawData.add(record);     Mark

  • What should I use? Vectors or...

    I'm storing a large amount of Person objects, this is for a type of game I'm trying to create where it saves the players name, wins, losses, rank, etc in each Person object (this will all be in a text file also). I want these so that they can be sorted by any one of these statistics. I'm not sure how to go about this. Vectors were the first thing that came to my mind, but then I thought about LinkedLists, but I don't know much about them yet, I just know it's an option. My brother told me use LinkedLists, but that's all he would tell me. What should I use for this kind of task? All suggestions are welcome, I need a little help with this design. One more thing about this, players will be added and removed also. I really need some insight, thanks.
    This is a side question, if someone could answer it, that would be nice, otherwise it's ok. How does a LinkedList differ from a Vector? Can't everything a LinkedList do, a Vector can do also with the same amount of ease? All I know that LinkedLists point to the next and previous nodes or something like that, not really sure what its advantage is. Thank you.

    An array memory for holding each of the objects is allocated when you create it, hence you have to define the number of object you want when you create it.
    +--+--+--+--+--+--+
    |I0|I1|I2|I3|I4|I5|  < Indexs
    +--+--+--+--+--+--+
    |V0|V1|V2|V3|V4|V5| < Values
    +--+--+--+--+--+--+Pro: you can access the data quickly, as you have a direct refrence to each value, via it's index.
    Con: Fixed size
    Con: Waisted space
    A Vector is a growable array.
    It does this by creating a fixed sized array, then waiting until it's full, then creating a bigger one and then copying all the data from the smaller, old array to the new, bigger array. This means that every now and again you suffer a performce hit as your array grows.
    Pro: you can access the data quickly, as you have a direct refrence to each value, via it's index.
    Pro: Not a fixed size
    Con: Will slow down when it grows.
    Con: Waisted space
    A Linked List does not have this problem each element holds the refrence to the next, unlike an array where the "system" holds a refrence to each element. This reduces its memory footprint, however its slower to search through as you have to loop through all the objects.
    +----+----+
    |DATA|LINK|
    +----+--|-+
            |     +----+----+
            +-->  |DATA|LINK|
                  +----+----+Pro: Growable
    Pro: Size
    Con: Slow to search
    There are things you can do to speed up a linked list (double linked lists & improve the order in which they are added) but it's still slow.
    I'll leave choosing the data structure to you.

  • Should we use JRocket?

    On http://edocs.bea.com/jrockit/geninfo/diagnos/migrate.html I'm reading "Although there are other JDKs available on the market today that you can use to develop Java applications, Oracle recommends that you use JRockit JDK with your Oracle products".
    So should we migrate to JRocket? Is it supported on ECM 10g?

    I used to use ArrayList everywhere since it was a newer class and recommended in books, but use Vector now because it is used in several key environments: Java 1 (Web browsers), Swing and J2ME. In Java2, Vector was retrofitted to use the Collections framework, so Vector implements List.
    Anyway, you should probably deal with only the List interface anyway so whichever you decide will be localized. That way, if Sun suddenly stops supporting Vector, you will only need to make a change in one place.
    List mylist = new Vector();

  • Which object should i use ?

    Hi,
    I have a methode that returns several values of different types. Which objet should I use to return these values ? I thought of Vector but somebody told me that there is a better object than Vector.
    thanks for your help !
    Tex

    First, always use an interface over an object if it exists. So, your code should always declare the instance variable as List, not ArrayList or Vector or LinkedList. This allows the implementation to be optimized for the task at hand (e.g. LinkedList for arbitrary insertions or deletions of data, ArrayList for better Iterator performance, etc.) while using the interface for the common List methods (e.g., get(), add(), remove(), iterator(), etc.)
    Second, avoid Vector. Sun specifically states in the Collections tutorial that ArrayList is preferred over Vector.
    - Saish
    "My karma ran over your dogma." - Anon

  • Question about efficiency, should i use hashmap?

    Hi all
    i read a csv file and store each line's data into a class MyData.
    this class contains a variable of id - unique for object.
    i want to store all my MyData object in a collection for later use.
    if i want to access them in the fastest way, should i store my objects in a hashmap, and the key value would be their id?
    like -
    HashMap hashmap = new HashMap();
    MyClass mc1 = new MyClass(1); //id =1
    MyClass mc2 = new MyClass(4); //id =4
    //i add the objects
    hashmap.put(mc1.getID(),mc1);
    hashmap,put(mc2.getID(),mc2);
    //then when i want to get a certain object, where id is 4:
    MyClass mc = hashmap.get(4);should i use other collection? or is it fine that way?
    Thanks!

    jwenting wrote:
    don't worry about microoptimisations like selecting a collection class based on how fast it is unless and until you have written evidence that the class you had initially chosen was the sole reason for unacceptably poor performance (which will hardly ever matter, the only time I've ever encountered that was with an ancient web application making extensive use of Vector, where switching to ArrayList made it an order of magnitude faster).Hmmm... I do diagree with that statement, but then again I'm an old f@rt... I cut my teeth on the gory gizzards of all manor of data-structures, and I still believe that selection of the "correct" data structure(s) is a core implementation issue... especially where efficiency is (even occasionally) desirable.
    I haven't seen the same big gains when replacing Vector with ArrayList... in fact, I've only seen a very marginal (<10%) increase in "overall" throughput... I have seen a couple of orders of magnitude (or thereabouts) increase when I swapped a Vector<Integer> for an int[], but that was in the inner-loop of an inherently n^2 (I think) spatial algorithm.... and I also made it reuse the int[], instead of creating, growing and throwing away the vector every time through the outer loop. Malloc is expensive ;-)
    I'd be interested to hear more details about under the conditions under which ArrayList is 10 times faster than Vector, because I do a lot of work on a 1.3/1.4 era codebase, which is full of Vectors and HashTables... and I would like to be able to make a case for an en mass replacement (and generifying) of the "old school" datastructures... but alas, I see very little bang for our buck, so I just bite my toungue and continue using Vectors, even in new code, because so many existing "helpers" take a (explicitly) Vector parameter.
    I heard a "rumor" somewhere (probably a thread here) that there's talk of discontinueing support for non-generic collections in 1.7, because they (the API/VM developers) are having to (sort of) maintain two divergent versions of every collection related thing... and nothing annoys a developer more than that, right... so Please can anyone confirm or repudiate this "rumour".
    Cheers. Keith.

  • Reading & writing to file using ArrayList String incorrectly (2)

    I have been able to store two strings (M44110|T33010, M92603|T10350) using ArrayList<String>, which represent the result of some patient tests. Nevertheless, the order of these results have been stored correctly.
    E.g. currently stored in file Snomed-Codes as -
    [M44110|T33010, M92603|T10350][M44110|T33010, M92603|T10350]
    Should be stored and printed out as -
    M44110|T33010
    M92603|T10350
    Below is the detail of the source code of this program:
    import java.io.*;
    import java.io.IOException;
    import java.lang.String;
    import java.util.regex.*;
    import java.util.ArrayList;
    public class FindSnomedCode {
        static ArrayList<String> allRecords = new ArrayList<String>();
        static public ArrayList<String> getContents(File existingFile) {
            StringBuffer contents = new StringBuffer();
            BufferedReader input = null;
            int line_number = 0;
            int number_of_records = 0;
            String snomedCodes = null;
            ArrayList<String> complete_records = new ArrayList<String>();
            try {
                input = new BufferedReader( new FileReader(existingFile) );
                String current_line = null;
                while (( current_line = input.readLine()) != null) {
                    // Create a pattern to match for the "\"
                    Pattern p = Pattern.compile("\\\\");
                    // Create a matcher with an input string
                    Matcher m = p.matcher(current_line);
                    boolean beginning_of_record = m.find();
                    if (beginning_of_record) {
                        line_number = 0;
                        number_of_records++;
                    } else {
                        line_number++;
                    if ( (line_number == 2) && (current_line.length() != 0) ) {
                        snomedCodes = current_line;
                        System.out.println(snomedCodes);
                        complete_records.add(current_line);
            catch (FileNotFoundException ex) {
                ex.printStackTrace();
            catch (IOException ex){
                ex.printStackTrace();
            finally {
                try {
                    if (input!= null) {
                        input.close();
                catch (IOException ex) {
                    ex.printStackTrace();
            return complete_records;
        static public void setContents(File reformatFile, ArrayList<String> snomedCodes)
                                     throws FileNotFoundException, IOException {
           Writer output = null;
            try {
                output = new BufferedWriter( new FileWriter(reformatFile) );
                  for (String index : snomedCodes) {
                      output.write( snomedCodes.toString() );
            finally {
                if (output != null) output.close();
        static public void printContents(File existingFile) {
            StringBuffer contents = new StringBuffer();
            BufferedReader input = null;
            int line_number = 0;
            int number_of_records = 0;
            String snomedCodes = null;
            try {
                input = new BufferedReader( new FileReader(existingFile) );
                String current_line = null;
                while (( current_line = input.readLine()) != null)
                    System.out.println(current_line);
            catch (FileNotFoundException ex) {
                ex.printStackTrace();
            catch (IOException ex){
                ex.printStackTrace();
            finally {
                try {
                    if (input!= null) {
                        input.close();
                catch (IOException ex) {
                    ex.printStackTrace();
        public static void main (String args[]) throws IOException {
            File currentFile = new File("D:\\dummy_patient.txt");
            allRecords = getContents(currentFile);
            File snomedFile = new File( "D:\\Snomed-Codes.txt");
            setContents(snomedFile, allRecords);
            printContents(snomedFile);
    }There are 4 patient records in the dummy_patient.txt file but only the 1st (M44110|T33010) & 3rd (M92603|T10350) records have results in them. The 2nd & 4th records have blank results.
    Lastly, could someone explain to me the difference between java.util.List & java.util.ArrayList?
    I am running Netbeans 5.0, jdk1.5.0_09 on Windows XP, SP2.
    Many thanks,
    Netbeans Fan.

    while (snomedCodes.iterator().hasNext())
      output.write( snomedCodes.toString() );
    }Here you have some kind of a list or something (I couldn't stand to read all that unformatted code but I suppose you can find out). It has an iterator which gives you the entries of the list one at a time. You keep asking if it has more entries -- which it does -- but you never get those entries by calling the next() method, so it always has all the entries still available.
    And your code inside the loop is independent of the iterator, so it's rather pointless to iterate over the entries and output exactly the same data for each entry. Even if you were iterating correctly.

  • Quick question! What tool should I use to make this logo?

    I would like to know how to make the following image 1 to turn to image 2 ? What tool should I use? Thank you very much !

    Probably the quickest way would be to use Offset Path, that is if the original file is vector artwork.  Your two screen shot images do not match.  If your assignment is to recreate the "CNN" logo, you'd be best to start with the internal Stroke ( White ).  Use the existing artwork as a template Layer.  Draw on a separate Layer going by the existing artwork.  Simple Pen tool operation consisting of around eight anchor points.  Once you've established the most accurate Stroke rendition, copy the file using a different name ( CNN02.ai or similar ).  Outline the copy.  Then, use Offset Path for the outer Red ( save that as CNN03.ai ). Copying in sequential steps allows you to go back just in case something does not look right.  If accuracy is important, you'll have to resolve the "C" deviation you have right now.

  • We have 4 iphones in our family and an Ipad.  When we purchase music I would like for the entire family to be able to use it.  Should each of us use a different apple account or should we use the same one.

    We have 4 iphones and an Ipad in our family. When we purchase music, I would like for the entire family to be able to use it and then back it up to Icloud. What is the best and cheapest way for this to happen.  Should we all have a different apple id or should we use the same one.

    You will all need to be on the same itunes account ID.
    You can however all have seperate icloud accounts aswel.

  • What type of hard disk should I use if I want to use it on mac and windows?

    Hey Forum,
    I am using windows xp on my macbook (snow leopard). I came across some dealers who say that there are hard disks for mac only and for both mac and windows. So, I wanted to buy a hard disk so that I can use it both on mac and windows xp, so what type of hard disk should I use? Must I partition into 2?
    or are there any harddisk in the market which is compatible for both mac and windows xp without screwing up the format(NTFS/Mac OS X Journaled)? Pls look into this matter and help me with it.
    All of your replies and suggestions is much appreciated.
    Thank you.
    Ala.

    Run, don't walk, from that dealer! and never look back
    Once in a very long while Apple will have customized firmware on drives, and it is possible to find SCSI/SAS or drives that are destined to be used with high end storage controllers.
    But that is the exception that makes the rule.
    SATA is SATA. Though.... there are now SATA III drives that don't work in XP, or that need a jumper, and Seagate and some drives have managed to deliver firmware that has caused trouble... and Apple has had to issue firmware updates to help compatibility....

  • Return under Warranty (Tracking Line only) Should we use MIGO - Goods Issue

    Return under Warranty (Tracking Line only) Should we use MIGO - Goods Issue when sending out Materials for repair or exchange under Warranty (Free)?

    Please post it in SD/MM forum.

  • I feel I must move beyond iMovie, what program should I use ?

    I have been happily using iMovie and iDVD from versions 1 through 6.  iMovie 08 was so bad that Apple made iMovie 06 available as a free download for buyers of iMovie 08. The newer iMovies were better, but they seemed “dumbed down” (even for me).  Now, I am shocked and horrified to learn that the latest iMovie does not even set chapter markers!
    So, I have continued to use iMovie 06 and iDVD 08 (they seem to work fine under OS 10.9.4).   iMovie 06 is now 8 years old!  I feel compelled to move forward. A lot of my work is DV.    In the past, most of my source material came out of S-Video.   I used a Canopus ADVC300 analog-to-digital converter that gave good results.   Going forward, I will have more video utilizing Component Video, or HDMI.
    I am looking into 2 possibilities,  Adobe Premiere elements 12, or.........Final Cut Pro X.
    The final result of my work is almost always a DVD.   It is hard for me to move from iMovie and iDVD.  I never read the manuals for either program, yet,  I was able to produce DVDs with nice menus and overall quality close to Hollywood.
    It looks like Final Cut Pro X 'can' make a DVD directly without other software.  However, from what I have seen on YouTube the result is primitive compared to what iDVD was doing 10 years ago.
    Adobe Premiere elements 12 can make nice DVDs and Blu-ray's directly.  I have no problem with using a separate program to make DVDs but I haven't got a clue how to do that with Final Cut Pro X.   I suppose I can still use iDVD, but now I'm back to using discontinued software.
    I do not need any of the high-powered affects capability that Final Cut Pro X  possesses.  My “movie-making” is mostly confined to simple editing (the old iMovie 06 did all I needed).
    Frankly, one motivation for choosing Final Cut Pro X, is the excellent, compassionate and understanding support that the kind people on this very forum provide.  So, what program should I use?

    Ziatron wrote:
    ...  I am shocked and horrified to learn that the latest iMovie does not even set chapter markers!
    .. I am looking into 2 possibilities,  Adobe Premiere elements 12, or.........Final Cut Pro X.
    The final result of my work is almost always a DVD. ...
    ... I do not need any of the high-powered affects capability that Final Cut Pro X  possesses.  My “movie-making” is mostly confined to simple editing (the old iMovie 06 did all I needed).
    to turn perspective for a second by 180°:
    Why do you want to switch to a new editor anyhow?
    • iM-a never did discs - that was iDVDs job = no big change in your workflow
    • iDVD is still working, and aside obsolete, complex and $$$$ DVDSP (part of obsolete FC/p) or Encore (part of Adobes CC rent package) your only option left to create disks on MacOS is indeed iDVD (...ok, there's Toast and Burn and some weird 'shareware'-stuff...)..
    • iMovie-b supports the new HDef formats (AVCHD) - you mentioned converters and DVDs = no HDef in use, in your habitat, correct?
    • if you don't need FCPX' bling-bling (I can't imagine that ) - why not using FCPX-lite = iMovie? 15$ ...
    • chapters could be done in iDVD - just to mention that ............
    • AP and FCPX are following very different concepts in usage - my personal preference is 200% on FCPX, … I was one of the loudest nay-sayers, when iM08 araised, meanwhile, FCPX is my dream!! AP (tested it) is way too complex, crowded, 'optionalized' and did I mention 'complex' for me. A bit like Windows vs. MacOS: 'everything goes' (incl. getting lost) vs. 'convenience' (incl. restrictions) ... After 2y of practice, I'm editing my weekly hobby-projects with 6-cam-Multicam, incl. tons of  custom graphics, slow-mow, effects (soccer games) in less than 2h ... awesome!
    summary:
    • why switching?
    • use iMovie10 + iDVD
    • Premiere (or Premiere Elements!) and FCPX are both avail as fee trial ... test  it - but you need iDVD anyhow
    • 'disks'  is a dwindling niché, for years!- consider to switch to 'other' distribution options
    ... what are 'chapters' anyhow??... (kid din'!)

  • Which C# Adobe library should I use to open a PDF in Acrobat Reader 9, 10, and 11?

    Hi, all.
    I have a Visual Studio C# application that writes an Adobe PDF using iText. Does anyone know how to programmatically open the PDF on client's computer and ensure it works for Adobe Reader 9, 10, and 11?
    -I have Adobe Reader XI on my machine and "Adobe Pdf Reader" is NOT showing up in my COM references. This is the library that I've heard people use for this.
    -The "Adobe Reader File Preview Type Library" is showing up there, but does not add to my project because of the following error message: "A reference to 'Adobe Reader File Preview Type Library' could not be added. Could not register the ActiveX type library....adoberfp.dll'." But I haven't persued this further becuase I'm not even convinced I should be using this library, which brings me to my next point:
    -Please don't tell me to go read the Adobe SDK spec. In searching for this answer, I found posts on here with people asking this question and getting not great answers, or half-*** answers to go read the Adobe SDK spec. I have the Adobe SDK spec, it's terrible. The example source code is laughably poor and reads like it was written by someone with bad english, with poor naming, commenting, and documentation, and there is no separate document that explains what the source code does. I think the reason people say this is because they haven't read it themselves and they don't know the answer and hope to deal with the question by handwaving. Sorry for the rant if you weren't going to do that!
    Thanks in advance, if anyone knows.
    -Brandon

    It will be from a client-side application, and I will be reviewing this further and get back on it. At this time my assembly isn't the correct type of 32-bit, which may be a deal-breaker. But downgrading it to 32-bit, I wasn't able to find or include the appropriate library for AXAcroPDF.
    Just a word about my trying to read the SDK documentation. The documentation folder has 5 items, a folder called "Javascript", an html file caled "Acrobat_11_SDK_Help_Shortcut.html", a zip file called "...HTMLHelp.zip," pdf_reference.pdf, and U3DElements.pdf. I've never heard of U3DElements, so surely that isn't meant for me. The pdf_reference.pdf, when opened, has three PDF links to two supplements to ISO 32000-1 and a document titled Document management. These describe the PDF spec, so that's not for me. So I must have to use the HTML documentation shortcut. I open it, and my browser says the redirect URL can't be found. Ah, may be that stuff in the ZIP file it's referencing. After unzipping it, you have to move the file around so that it actually references the right index.html inside the unzipped folders, and then even after this it loads up as two blank frames in my browser. I will look into why the links are all dead, but holy lord, this is just not very helpful at all.
    Thanks for your help, Test Screen Name.

Maybe you are looking for