<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FDesign_Pattern%2FIterator_Pattern</id>
		<title>Java/Design Pattern/Iterator Pattern - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FDesign_Pattern%2FIterator_Pattern"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Design_Pattern/Iterator_Pattern&amp;action=history"/>
		<updated>2026-04-22T05:05:32Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Design_Pattern/Iterator_Pattern&amp;diff=7789&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Design_Pattern/Iterator_Pattern&amp;diff=7789&amp;oldid=prev"/>
				<updated>2010-06-01T06:50:40Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:50, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Design_Pattern/Iterator_Pattern&amp;diff=7788&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Design_Pattern/Iterator_Pattern&amp;diff=7788&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:45Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Iterator Pattern 3 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
//[C] 2002 Sun Microsystems, Inc.---&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.ObjectInputStream;&lt;br /&gt;
import java.io.ObjectOutputStream;&lt;br /&gt;
import java.io.PrintStream;&lt;br /&gt;
import java.io.Serializable;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
public class RunIteratorPattern {&lt;br /&gt;
    public static void main(String [] arguments){&lt;br /&gt;
        System.out.println(&amp;quot;Example for the Iterator pattern&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot; This code sample demonstrates how an Iterator can enforce&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot; uniformity of processing for different collection types.&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot; In this case, there are two classes, ToDoListImpl and&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot; ToDoListCollectionImpl, that have different storage needs.&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot; ToDoListImpl uses an ArrayList to store its elements in&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot; ordered form. The ToDoListCollectionImpl uses a HashMap,&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot; since it must differentiate between ToDoListImpl objects by&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot; their String identifiers.&amp;quot;);&lt;br /&gt;
        System.out.println();&lt;br /&gt;
        System.out.println(&amp;quot;Although the two classes use different underlying collections,&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot; the ListPrinter class can use the Iterator produced by each&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot; to print out a set of list contents.&amp;quot;);&lt;br /&gt;
        System.out.println();&lt;br /&gt;
        &lt;br /&gt;
        if (!(new File(&amp;quot;data.ser&amp;quot;).exists())){&lt;br /&gt;
            DataCreator.serialize(&amp;quot;data.ser&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        ToDoListCollection lists = (ToDoListCollection)(DataRetriever.deserializeData(&amp;quot;data.ser&amp;quot;));&lt;br /&gt;
        &lt;br /&gt;
        System.out.println(&amp;quot;Lists retrieved. Printing out contents using the Iterator&amp;quot;);&lt;br /&gt;
        System.out.println();&lt;br /&gt;
        ListPrinter.printToDoListCollection(lists, System.out);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
interface Iterating extends Serializable {&lt;br /&gt;
  public Iterator getIterator();&lt;br /&gt;
}&lt;br /&gt;
class ToDoListImpl implements ToDoList {&lt;br /&gt;
  private String listName;&lt;br /&gt;
  private ArrayList items = new ArrayList();&lt;br /&gt;
  public void add(String item) {&lt;br /&gt;
    if (!items.contains(item)) {&lt;br /&gt;
      items.add(item);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void add(String item, int position) {&lt;br /&gt;
    if (!items.contains(item)) {&lt;br /&gt;
      items.add(position, item);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void remove(String item) {&lt;br /&gt;
    if (items.contains(item)) {&lt;br /&gt;
      items.remove(items.indexOf(item));&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public int getNumberOfItems() {&lt;br /&gt;
    return items.size();&lt;br /&gt;
  }&lt;br /&gt;
  public Iterator getIterator() {&lt;br /&gt;
    return items.iterator();&lt;br /&gt;
  }&lt;br /&gt;
  public String getListName() {&lt;br /&gt;
    return listName;&lt;br /&gt;
  }&lt;br /&gt;
  public void setListName(String newListName) {&lt;br /&gt;
    listName = newListName;&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return listName;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface ToDoListCollection extends Iterating {&lt;br /&gt;
  public void add(ToDoList list);&lt;br /&gt;
  public void remove(ToDoList list);&lt;br /&gt;
  public int getNumberOfItems();&lt;br /&gt;
}&lt;br /&gt;
interface ToDoList extends Iterating {&lt;br /&gt;
  public void add(String item);&lt;br /&gt;
  public void add(String item, int position);&lt;br /&gt;
  public void remove(String item);&lt;br /&gt;
  public int getNumberOfItems();&lt;br /&gt;
  public String getListName();&lt;br /&gt;
  public void setListName(String newListName);&lt;br /&gt;
}&lt;br /&gt;
class ListPrinter {&lt;br /&gt;
  public static void printToDoList(ToDoList list, PrintStream output) {&lt;br /&gt;
    Iterator elements = list.getIterator();&lt;br /&gt;
    output.println(&amp;quot;  List - &amp;quot; + list + &amp;quot;:&amp;quot;);&lt;br /&gt;
    while (elements.hasNext()) {&lt;br /&gt;
      output.println(&amp;quot;\t&amp;quot; + elements.next());&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void printToDoListCollection(ToDoListCollection lotsOfLists,&lt;br /&gt;
      PrintStream output) {&lt;br /&gt;
    Iterator elements = lotsOfLists.getIterator();&lt;br /&gt;
    output.println(&amp;quot;\&amp;quot;To Do\&amp;quot; List Collection:&amp;quot;);&lt;br /&gt;
    while (elements.hasNext()) {&lt;br /&gt;
      printToDoList((ToDoList) elements.next(), output);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void printIteratingElement(Iterating element,&lt;br /&gt;
      PrintStream output) {&lt;br /&gt;
    output.println(&amp;quot;Printing the element &amp;quot; + element);&lt;br /&gt;
    Iterator elements = element.getIterator();&lt;br /&gt;
    while (elements.hasNext()) {&lt;br /&gt;
      Object currentElement = elements.next();&lt;br /&gt;
      if (currentElement instanceof Iterating) {&lt;br /&gt;
        printIteratingElement((Iterating) currentElement, output);&lt;br /&gt;
        output.println();&lt;br /&gt;
      } else {&lt;br /&gt;
        output.println(currentElement);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class DataRetriever {&lt;br /&gt;
  public static Object deserializeData(String fileName) {&lt;br /&gt;
    Object returnValue = null;&lt;br /&gt;
    try {&lt;br /&gt;
      File inputFile = new File(fileName);&lt;br /&gt;
      if (inputFile.exists() &amp;amp;&amp;amp; inputFile.isFile()) {&lt;br /&gt;
        ObjectInputStream readIn = new ObjectInputStream(&lt;br /&gt;
            new FileInputStream(fileName));&lt;br /&gt;
        returnValue = readIn.readObject();&lt;br /&gt;
        readIn.close();&lt;br /&gt;
      } else {&lt;br /&gt;
        System.err.println(&amp;quot;Unable to locate the file &amp;quot; + fileName);&lt;br /&gt;
      }&lt;br /&gt;
    } catch (ClassNotFoundException exc) {&lt;br /&gt;
      exc.printStackTrace();&lt;br /&gt;
    } catch (IOException exc) {&lt;br /&gt;
      exc.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return returnValue;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class ToDoListCollectionImpl implements ToDoListCollection {&lt;br /&gt;
  private HashMap lists = new HashMap();&lt;br /&gt;
  public void add(ToDoList list) {&lt;br /&gt;
    if (!lists.containsKey(list.getListName())) {&lt;br /&gt;
      lists.put(list.getListName(), list);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void remove(ToDoList list) {&lt;br /&gt;
    if (lists.containsKey(list.getListName())) {&lt;br /&gt;
      lists.remove(list.getListName());&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public int getNumberOfItems() {&lt;br /&gt;
    return lists.size();&lt;br /&gt;
  }&lt;br /&gt;
  public Iterator getIterator() {&lt;br /&gt;
    return lists.values().iterator();&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return getClass().toString();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class DataCreator {&lt;br /&gt;
  private static final String DEFAULT_FILE = &amp;quot;data.ser&amp;quot;;&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    String fileName;&lt;br /&gt;
    if (args.length == 1) {&lt;br /&gt;
      fileName = args[0];&lt;br /&gt;
    } else {&lt;br /&gt;
      fileName = DEFAULT_FILE;&lt;br /&gt;
    }&lt;br /&gt;
    serialize(fileName);&lt;br /&gt;
  }&lt;br /&gt;
  public static void serialize(String fileName) {&lt;br /&gt;
    try {&lt;br /&gt;
      serializeToFile(createData(), fileName);&lt;br /&gt;
    } catch (IOException exc) {&lt;br /&gt;
      exc.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  private static Serializable createData() {&lt;br /&gt;
    ToDoListCollection data = new ToDoListCollectionImpl();&lt;br /&gt;
    ToDoList listOne = new ToDoListImpl();&lt;br /&gt;
    ToDoList listTwo = new ToDoListImpl();&lt;br /&gt;
    ToDoList listThree = new ToDoListImpl();&lt;br /&gt;
    listOne.setListName(&amp;quot;Daily Routine&amp;quot;);&lt;br /&gt;
    listTwo.setListName(&amp;quot;Programmer hair washing procedure&amp;quot;);&lt;br /&gt;
    listThree.setListName(&amp;quot;Reading List&amp;quot;);&lt;br /&gt;
    listOne.add(&amp;quot;Get up (harder some days than others)&amp;quot;);&lt;br /&gt;
    listOne.add(&amp;quot;Brew cuppa Java&amp;quot;);&lt;br /&gt;
    listOne.add(&amp;quot;Read JVM Times&amp;quot;);&lt;br /&gt;
    listTwo.add(&amp;quot;Lather&amp;quot;);&lt;br /&gt;
    listTwo.add(&amp;quot;Rinse&amp;quot;);&lt;br /&gt;
    listTwo.add(&amp;quot;Repeat&amp;quot;);&lt;br /&gt;
    listTwo.add(&amp;quot;(eventually throw a TooMuchHairConditioner exception)&amp;quot;);&lt;br /&gt;
    listThree.add(&amp;quot;The complete annotated aphorisms of Duke&amp;quot;);&lt;br /&gt;
    listThree.add(&amp;quot;How green was my Java&amp;quot;);&lt;br /&gt;
    listThree.add(&amp;quot;URL, sweet URL&amp;quot;);&lt;br /&gt;
    data.add(listOne);&lt;br /&gt;
    data.add(listTwo);&lt;br /&gt;
    data.add(listThree);&lt;br /&gt;
    return data;&lt;br /&gt;
  }&lt;br /&gt;
  private static void serializeToFile(Serializable data, String fileName)&lt;br /&gt;
      throws IOException {&lt;br /&gt;
    ObjectOutputStream serOut = new ObjectOutputStream(&lt;br /&gt;
        new FileOutputStream(fileName));&lt;br /&gt;
    serOut.writeObject(data);&lt;br /&gt;
    serOut.close();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Iterator pattern in Java ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
The Design Patterns Java Companion&lt;br /&gt;
Copyright (C) 1998, by James W. Cooper&lt;br /&gt;
IBM Thomas J. Watson Research Center&lt;br /&gt;
*/&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.GridLayout;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.RandomAccessFile;&lt;br /&gt;
import java.util.Enumeration;&lt;br /&gt;
import java.util.NoSuchElementException;&lt;br /&gt;
import java.util.StringTokenizer;&lt;br /&gt;
import java.util.Vector;&lt;br /&gt;
import javax.swing.AbstractListModel;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.border.EmptyBorder;&lt;br /&gt;
import javax.swing.event.ListSelectionEvent;&lt;br /&gt;
import javax.swing.event.ListSelectionListener;&lt;br /&gt;
public class IterDemo extends JFrame implements ActionListener {&lt;br /&gt;
  JawtList kidList, kidClubList;&lt;br /&gt;
  JTextField tx;&lt;br /&gt;
  JButton Get;&lt;br /&gt;
  KidData kdata;&lt;br /&gt;
  public IterDemo() {&lt;br /&gt;
    super(&amp;quot;Enumeration demo&amp;quot;);&lt;br /&gt;
    addWindowListener(new WindowAdapter() {&lt;br /&gt;
      public void windowClosing(WindowEvent e) {&lt;br /&gt;
        System.exit(0);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JPanel jp = new JPanel();&lt;br /&gt;
    getContentPane().add(jp);&lt;br /&gt;
    jp.setLayout(new GridLayout(1, 2));&lt;br /&gt;
    JPanel left = new JPanel();&lt;br /&gt;
    JPanel right = new JPanel();&lt;br /&gt;
    jp.add(left);&lt;br /&gt;
    jp.add(right);&lt;br /&gt;
    left.setBorder(new EmptyBorder(5, 5, 5, 5));&lt;br /&gt;
    right.setBorder(new EmptyBorder(5, 5, 5, 5));&lt;br /&gt;
    kidList = new JawtList(20);&lt;br /&gt;
    left.setLayout(new BorderLayout());&lt;br /&gt;
    left.add(&amp;quot;Center&amp;quot;, kidList);&lt;br /&gt;
    right.setLayout(new BorderLayout());&lt;br /&gt;
    tx = new JTextField(10);&lt;br /&gt;
    Get = new JButton(&amp;quot;Get&amp;quot;);&lt;br /&gt;
    Get.addActionListener(this);&lt;br /&gt;
    JPanel rtop = new JPanel();&lt;br /&gt;
    right.add(&amp;quot;North&amp;quot;, rtop);&lt;br /&gt;
    rtop.add(tx);&lt;br /&gt;
    rtop.add(Get);&lt;br /&gt;
    kidClubList = new JawtList(20);&lt;br /&gt;
    right.add(&amp;quot;Center&amp;quot;, kidClubList);&lt;br /&gt;
    kdata = new KidData(&amp;quot;50free.txt&amp;quot;);&lt;br /&gt;
    fillKidList();&lt;br /&gt;
    setSize(new Dimension(400, 300));&lt;br /&gt;
    setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  //---------------------------------------&lt;br /&gt;
  private void fillKidList() {&lt;br /&gt;
    Enumeration ekid = kdata.elements();&lt;br /&gt;
    while (ekid.hasMoreElements()) {&lt;br /&gt;
      Kid k = (Kid) ekid.nextElement();&lt;br /&gt;
      kidList.add(k.getFrname() + &amp;quot; &amp;quot; + k.getLname());&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  //---------------------------------------&lt;br /&gt;
  public void actionPerformed(ActionEvent e) {&lt;br /&gt;
    String club = tx.getText();&lt;br /&gt;
    if (club.trim().length() &amp;gt; 0) {&lt;br /&gt;
      Enumeration eclub = kdata.kidsInClub(club);&lt;br /&gt;
      while (eclub.hasMoreElements()) {&lt;br /&gt;
        Kid k = (Kid) eclub.nextElement();&lt;br /&gt;
        kidClubList.add(k.getFrname() + &amp;quot; &amp;quot; + k.getLname());&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  //---------------------------------------&lt;br /&gt;
  static public void main(String argv[]) {&lt;br /&gt;
    new IterDemo();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface awtList&lt;br /&gt;
{&lt;br /&gt;
     public void add(String s);&lt;br /&gt;
     public void remove(String s);&lt;br /&gt;
     public String[] getSelectedItems();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class JawtList extends JScrollPane implements ListSelectionListener, awtList {&lt;br /&gt;
  private JList listWindow;&lt;br /&gt;
  private JListData listContents;&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public JawtList(int rows) {&lt;br /&gt;
    listContents = new JListData();&lt;br /&gt;
    listWindow = new JList(listContents);&lt;br /&gt;
    listWindow.setPrototypeCellValue(&amp;quot;Abcdefg Hijkmnop&amp;quot;);&lt;br /&gt;
    getViewport().add(listWindow);&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public void add(String s) {&lt;br /&gt;
    listContents.addElement(s);&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public void remove(String s) {&lt;br /&gt;
    listContents.removeElement(s);&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public void clear() {&lt;br /&gt;
    listContents.clear();&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public String[] getSelectedItems() {&lt;br /&gt;
    Object[] obj = listWindow.getSelectedValues();&lt;br /&gt;
    String[] s = new String[obj.length];&lt;br /&gt;
    for (int i = 0; i &amp;lt; obj.length; i++)&lt;br /&gt;
      s[i] = obj[i].toString();&lt;br /&gt;
    return s;&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public void valueChanged(ListSelectionEvent e) {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
//=========================================&lt;br /&gt;
class JListData extends AbstractListModel {&lt;br /&gt;
  private Vector data;&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public JListData() {&lt;br /&gt;
    data = new Vector();&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public int getSize() {&lt;br /&gt;
    return data.size();&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public Object getElementAt(int index) {&lt;br /&gt;
    return data.elementAt(index);&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public void addElement(String s) {&lt;br /&gt;
    data.addElement(s);&lt;br /&gt;
    fireIntervalAdded(this, data.size() - 1, data.size());&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public void removeElement(String s) {&lt;br /&gt;
    data.removeElement(s);&lt;br /&gt;
    fireIntervalRemoved(this, 0, data.size());&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public void clear() {&lt;br /&gt;
    int size = data.size();&lt;br /&gt;
    data = new Vector();&lt;br /&gt;
    fireIntervalRemoved(this, 0, size);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class KidData {&lt;br /&gt;
  Vector kids;&lt;br /&gt;
  //------------------------------------------&lt;br /&gt;
  public KidData(String filename) {&lt;br /&gt;
    kids = new Vector();&lt;br /&gt;
    InputFile f = new InputFile(filename);&lt;br /&gt;
    String s = f.readLine();&lt;br /&gt;
    while (s != null) {&lt;br /&gt;
      if (s.trim().length() &amp;gt; 0) {&lt;br /&gt;
        Kid k = new Kid(s);&lt;br /&gt;
        kids.addElement(k);&lt;br /&gt;
      }&lt;br /&gt;
      s = f.readLine();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  //--------------------------------&lt;br /&gt;
  public Kid[] getData() {&lt;br /&gt;
    Kid[] kd = new Kid[kids.size()];&lt;br /&gt;
    for (int i = 0; i &amp;lt; kids.size(); i++)&lt;br /&gt;
      kd[i] = (Kid) kids.elementAt(i);&lt;br /&gt;
    return kd;&lt;br /&gt;
  }&lt;br /&gt;
  //--------------------------------&lt;br /&gt;
  public Enumeration elements() {&lt;br /&gt;
    return kids.elements();&lt;br /&gt;
  }&lt;br /&gt;
  //-------------------------------&lt;br /&gt;
  public Enumeration kidsInClub(String club) {&lt;br /&gt;
    return new kidClub(this, club);&lt;br /&gt;
  }&lt;br /&gt;
  //--------------------------------&lt;br /&gt;
  public int size() {&lt;br /&gt;
    return kids.size();&lt;br /&gt;
  }&lt;br /&gt;
  //--------------------------------&lt;br /&gt;
  public Kid getKid(int i) {&lt;br /&gt;
    return (Kid) kids.elementAt(i);&lt;br /&gt;
  }&lt;br /&gt;
  //--------------------------------&lt;br /&gt;
  public Vector getKidData(int key) {&lt;br /&gt;
    Vector v = new Vector();&lt;br /&gt;
    for (int i = 0; i &amp;lt; kids.size(); i++)&lt;br /&gt;
      v.addElement(getKid(i).getData(key));&lt;br /&gt;
    return v;&lt;br /&gt;
  }&lt;br /&gt;
  //--------------------------------&lt;br /&gt;
  public int getTableKey(String tabName) {&lt;br /&gt;
    int key = -1;&lt;br /&gt;
    tabName = tabName.toLowerCase();&lt;br /&gt;
    if (tabName.equals(&amp;quot;frname&amp;quot;))&lt;br /&gt;
      key = ParseVar.FRNAME;&lt;br /&gt;
    if (tabName.equals(&amp;quot;lname&amp;quot;))&lt;br /&gt;
      key = ParseVar.LNAME;&lt;br /&gt;
    if (tabName.equals(&amp;quot;age&amp;quot;))&lt;br /&gt;
      key = ParseVar.AGE;&lt;br /&gt;
    if (tabName.equals(&amp;quot;club&amp;quot;))&lt;br /&gt;
      key = ParseVar.CLUB;&lt;br /&gt;
    if (tabName.equals(&amp;quot;time&amp;quot;))&lt;br /&gt;
      key = ParseVar.TIME;&lt;br /&gt;
    return key;&lt;br /&gt;
  }&lt;br /&gt;
  //----------------------------&lt;br /&gt;
  public String getTableName(int i) {&lt;br /&gt;
    String name = &amp;quot;&amp;quot;;&lt;br /&gt;
    switch (i) {&lt;br /&gt;
    case ParseVar.FRNAME:&lt;br /&gt;
      name = &amp;quot;frname&amp;quot;;&lt;br /&gt;
    case ParseVar.LNAME:&lt;br /&gt;
      name = &amp;quot;lname&amp;quot;;&lt;br /&gt;
    case ParseVar.AGE:&lt;br /&gt;
      name = &amp;quot;age&amp;quot;;&lt;br /&gt;
    case ParseVar.CLUB:&lt;br /&gt;
      name = &amp;quot;club&amp;quot;;&lt;br /&gt;
    case ParseVar.TIME:&lt;br /&gt;
      name = &amp;quot;time&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    return name;&lt;br /&gt;
  }&lt;br /&gt;
  //----------------------------&lt;br /&gt;
}&lt;br /&gt;
class ParseObject {&lt;br /&gt;
  public static final int VERB = 1000, VAR = 1010, MULTVAR = 1020;&lt;br /&gt;
  protected int value;&lt;br /&gt;
  protected int type;&lt;br /&gt;
  public int getValue() {&lt;br /&gt;
    return value;&lt;br /&gt;
  }&lt;br /&gt;
  public int getType() {&lt;br /&gt;
    return type;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class ParseVar extends ParseObject {&lt;br /&gt;
  static final int FRNAME = 0, LNAME = 1, AGE = 2, CLUB = 3, TIME = 4,&lt;br /&gt;
      tabMAX = 5;&lt;br /&gt;
  public ParseVar(String s) {&lt;br /&gt;
    s = s.toLowerCase();&lt;br /&gt;
    value = -1;&lt;br /&gt;
    type = VAR;&lt;br /&gt;
    if (s.equals(&amp;quot;frname&amp;quot;))&lt;br /&gt;
      value = FRNAME;&lt;br /&gt;
    if (s.equals(&amp;quot;lname&amp;quot;))&lt;br /&gt;
      value = LNAME;&lt;br /&gt;
    if (s.equals(&amp;quot;age&amp;quot;))&lt;br /&gt;
      value = AGE;&lt;br /&gt;
    if (s.equals(&amp;quot;club&amp;quot;))&lt;br /&gt;
      value = CLUB;&lt;br /&gt;
    if (s.equals(&amp;quot;time&amp;quot;))&lt;br /&gt;
      value = TIME;&lt;br /&gt;
  }&lt;br /&gt;
  //--------------------------------------&lt;br /&gt;
  public boolean isLegal() {&lt;br /&gt;
    return (value &amp;gt;= 0);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Kid {&lt;br /&gt;
  String frname, lname, club;&lt;br /&gt;
  int age;&lt;br /&gt;
  float time;&lt;br /&gt;
  //-------------------------------------&lt;br /&gt;
  public Kid(String line) {&lt;br /&gt;
    StringTokenizer tok = new StringTokenizer(line);&lt;br /&gt;
    String lnum = tok.nextToken();&lt;br /&gt;
    frname = tok.nextToken();&lt;br /&gt;
    lname = tok.nextToken();&lt;br /&gt;
    age = new Integer(tok.nextToken()).intValue();&lt;br /&gt;
    club = tok.nextToken();&lt;br /&gt;
    time = new Float(tok.nextToken()).floatValue();&lt;br /&gt;
  }&lt;br /&gt;
  //-------------------------------&lt;br /&gt;
  public Object getData(int key) {&lt;br /&gt;
    switch (key) {&lt;br /&gt;
    case ParseVar.FRNAME:&lt;br /&gt;
      return frname;&lt;br /&gt;
    case ParseVar.LNAME:&lt;br /&gt;
      return lname;&lt;br /&gt;
    case ParseVar.CLUB:&lt;br /&gt;
      return club;&lt;br /&gt;
    case ParseVar.AGE:&lt;br /&gt;
      return new Integer(age);&lt;br /&gt;
    case ParseVar.TIME:&lt;br /&gt;
      return new Float(time);&lt;br /&gt;
    }&lt;br /&gt;
    return null;&lt;br /&gt;
  }&lt;br /&gt;
  //--------------------------------&lt;br /&gt;
  public int getAge() {&lt;br /&gt;
    return age;&lt;br /&gt;
  }&lt;br /&gt;
  public float getTime() {&lt;br /&gt;
    return time;&lt;br /&gt;
  }&lt;br /&gt;
  public String getFrname() {&lt;br /&gt;
    return frname;&lt;br /&gt;
  }&lt;br /&gt;
  public String getLname() {&lt;br /&gt;
    return lname;&lt;br /&gt;
  }&lt;br /&gt;
  public String getClub() {&lt;br /&gt;
    return club;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class InputFile {&lt;br /&gt;
  RandomAccessFile f = null;&lt;br /&gt;
  boolean errflag;&lt;br /&gt;
  String s = null;&lt;br /&gt;
  public InputFile(String fname) {&lt;br /&gt;
    errflag = false;&lt;br /&gt;
    try {&lt;br /&gt;
      //open file&lt;br /&gt;
      f = new RandomAccessFile(fname, &amp;quot;r&amp;quot;);&lt;br /&gt;
    } catch (IOException e) {&lt;br /&gt;
      //print error if not found&lt;br /&gt;
      System.out.println(&amp;quot;no file found&amp;quot;);&lt;br /&gt;
      errflag = true; //and set flag&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public boolean checkErr() {&lt;br /&gt;
    return errflag;&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public String read() {&lt;br /&gt;
    //read a single field up to a comma or end of line&lt;br /&gt;
    String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
    if (s == null) //if no data in string&lt;br /&gt;
    {&lt;br /&gt;
      s = readLine(); //read next line&lt;br /&gt;
    }&lt;br /&gt;
    if (s != null) //if there is data&lt;br /&gt;
    {&lt;br /&gt;
      s.trim(); //trim off blanks&lt;br /&gt;
      int i = s.indexOf(&amp;quot;,&amp;quot;); //find next comma&lt;br /&gt;
      if (i &amp;lt;= 0) {&lt;br /&gt;
        ret = s.trim(); //if no commas go to end of line&lt;br /&gt;
        s = null; //and null out stored string&lt;br /&gt;
      } else {&lt;br /&gt;
        ret = s.substring(0, i).trim(); //return left of comma&lt;br /&gt;
        s = s.substring(i + 1); //save right of comma&lt;br /&gt;
      }&lt;br /&gt;
    } else&lt;br /&gt;
      ret = null;&lt;br /&gt;
    return ret; //return string&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public String readLine() {&lt;br /&gt;
    //read in a line from the file&lt;br /&gt;
    s = null;&lt;br /&gt;
    try {&lt;br /&gt;
      s = f.readLine(); //could throw error&lt;br /&gt;
    } catch (IOException e) {&lt;br /&gt;
      errflag = true;&lt;br /&gt;
      System.out.println(&amp;quot;File read error&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    return s;&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
  public void close() {&lt;br /&gt;
    try {&lt;br /&gt;
      f.close(); //close file&lt;br /&gt;
    } catch (IOException e) {&lt;br /&gt;
      System.out.println(&amp;quot;File close error&amp;quot;);&lt;br /&gt;
      errflag = true;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  //-----------------------------------------&lt;br /&gt;
}&lt;br /&gt;
class kidClub implements Enumeration {&lt;br /&gt;
  String clubMask; //name of club&lt;br /&gt;
  Kid kid; //next kid to return&lt;br /&gt;
  Enumeration ke; //gets all kids&lt;br /&gt;
  KidData kdata; //class containing kids&lt;br /&gt;
  //----------------------------------------&lt;br /&gt;
  public kidClub(KidData kd, String club) {&lt;br /&gt;
    clubMask = club; //save the club&lt;br /&gt;
    kdata = kd; //copy the class&lt;br /&gt;
    kid = null; //default&lt;br /&gt;
    ke = kdata.elements(); //get Enumerator&lt;br /&gt;
  }&lt;br /&gt;
  //----------------------------------------&lt;br /&gt;
  public boolean hasMoreElements() {&lt;br /&gt;
    //return true if there are any more kids&lt;br /&gt;
    //belonging to the specified club&lt;br /&gt;
    boolean found = false;&lt;br /&gt;
    while (ke.hasMoreElements() &amp;amp;&amp;amp; !found) {&lt;br /&gt;
      kid = (Kid) ke.nextElement();&lt;br /&gt;
      found = kid.getClub().equals(clubMask);&lt;br /&gt;
    }&lt;br /&gt;
    if (!found)&lt;br /&gt;
      kid = null; //set to null if none left&lt;br /&gt;
    return found;&lt;br /&gt;
  }&lt;br /&gt;
  //----------------------------------------&lt;br /&gt;
  public Object nextElement() {&lt;br /&gt;
    if (kid != null)&lt;br /&gt;
      return kid;&lt;br /&gt;
    else&lt;br /&gt;
      //throw exception if access past end&lt;br /&gt;
      throw new NoSuchElementException();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
//50free.txt&lt;br /&gt;
/*&lt;br /&gt;
1 Amanda McCarthy             12  WCA         29.28&lt;br /&gt;
2 Jamie Falco                 12  HNHS        29.80&lt;br /&gt;
3 Meaghan O&amp;quot;Donnell           12  EDST        30.00&lt;br /&gt;
4 Greer Gibbs                 12  CDEV        30.04&lt;br /&gt;
5 Rhiannon Jeffrey            11  WYW         30.04&lt;br /&gt;
6 Sophie Connolly             12  WAC         30.05&lt;br /&gt;
7 Dana Helyer                 12  ARAC        30.18&lt;br /&gt;
8 Lindsay Marotto             12  OAK         30.23&lt;br /&gt;
9 Sarah Treichel              12  WYW         30.35&lt;br /&gt;
10 Ashley McEntee             12  RAC         30.47&lt;br /&gt;
11 Rachel Brookman            12  CAT         30.51&lt;br /&gt;
12 Michelle Ducharme          12  LEHY        30.51&lt;br /&gt;
13 Karleen Danais             12  NES         30.70&lt;br /&gt;
14 Megan Loock                12  WAC         30.90&lt;br /&gt;
15 Kaitlyn Ament              12  HNHS        30.93&lt;br /&gt;
16 Tara Schoen                12  WYW         31.01&lt;br /&gt;
17 Kate Olshefski             12  NCY         31.01&lt;br /&gt;
18 Emma Zuidema               12  HMST        31.07&lt;br /&gt;
19 Katie Persing              12  OAK         31.14&lt;br /&gt;
20 Christina Monsees          11  RAC         31.27&lt;br /&gt;
21 Kimberly Watcke            12  CDEV        31.50&lt;br /&gt;
22 Colleen Smith              12  AJSC        31.52&lt;br /&gt;
23 Chloe Osborne              12  GYWD        31.74&lt;br /&gt;
24 Natalia Fugate             12  WAC         31.75&lt;br /&gt;
25 Lisa McHale                11  RAC         31.76&lt;br /&gt;
26 Lindsay Cowles             11  NES         31.79&lt;br /&gt;
27 Jacquelyn Yavarone         12  HNHS        31.83&lt;br /&gt;
28 Molly Fenn                 12  WRAT        31.84&lt;br /&gt;
29 Karin Brudvig              12  HMST        31.84&lt;br /&gt;
30 Annie Duffy                12  MGAT        31.90&lt;br /&gt;
31 Nicole Coia                11  WCA         31.94&lt;br /&gt;
32 Elizabeth Rice             12  WYW         31.96&lt;br /&gt;
33 Yvette Landwehr            12  WRAT        32.00&lt;br /&gt;
34 Ashley Recklet             12  SHEL        32.24&lt;br /&gt;
35 Lauren McKenna             11  PSDY        32.27&lt;br /&gt;
36 Kristen Fontaine           12  EDST        32.28&lt;br /&gt;
37 Diana Cooke                12  ZEUS        32.33&lt;br /&gt;
38 Kimberly Gambino           11  NES         32.43&lt;br /&gt;
39 Jenny Morgan               11  NES         32.49&lt;br /&gt;
40 Colleen Coelho             12  CDEV        32.50&lt;br /&gt;
41 Leigh Gordon               12  CDEV        32.62&lt;br /&gt;
42 Caitlin Gillen             12  WYW         32.75&lt;br /&gt;
43 Kristen Skroski            12  HNHS        32.91&lt;br /&gt;
44 Sarah Greenberg            11  CDEV        32.97&lt;br /&gt;
45 Kathy Collins              12  EHBB        33.11&lt;br /&gt;
46 Morgan Bullock             12  ICSC        33.33&lt;br /&gt;
47 Brittany Medlin            12  CAT         33.33&lt;br /&gt;
48 Haley Ottenbreit           12  HNHS        33.35&lt;br /&gt;
49 Laura Kunces               11  WAC         33.64&lt;br /&gt;
50 Hayley Wolfgruber          12  WYW         33.73&lt;br /&gt;
51 Katie Duffy                12  MGAT        34.24&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>