/***************************************************************/
/* Prof. Dr. Carsten Vogt                                      */
/* FH Koeln, Fak. 07 / Nachrichtentechnik                      */
/* http://www.nt.fh-koeln.de/vogt                              */
/*                                                             */
/* Das Programm demonstriert Basismethoden auf TreeSets,       */
/* mit denen Mengen gespeichert werden.                        */
/* Bei TreeSets sind, im Unterschied zu HashSets, die Elemente */
/* immer in aufsteigender Reihenfolge angeordnet.              */
/* Das Programm ist erst ab Java 5 lauffaehig.                 */
/***************************************************************/

import java.io.*;
import java.util.*;

public class TreeSets {

 public static void main(String[] args)  {

  /* Deklaration und Erzeugung eines TreeSets */ 

  TreeSet<Integer> menge = new TreeSet<Integer>();

  /* Hinzufuegen von Elementen
     in ungeordneter Reihenfolge */

  System.out.println();
  System.out.println("Hinzufuegen der Elemente 6, 2, 9, 8, 4, 3, 7, 5");
  System.out.println();

  menge.add(6);
  menge.add(2);
  menge.add(9);
  menge.add(8);
  menge.add(4);
  menge.add(3);
  menge.add(7);
  menge.add(5);
    
  /* Ausgabe des Inhalts */

  System.out.print("Inhalt der Menge: ");
  for (Iterator it=menge.iterator();it.hasNext();)
   System.out.print(it.next()+" ");
  System.out.println();

  System.out.println("kleinstes Element: "+menge.first());
  System.out.println("groesstes Element: "+menge.last());

  /* Bildung von Teilmengen */

  TreeSet<Integer> m2;

  System.out.println();
  System.out.println("Alle Elemente echt kleiner als 5:");
  m2 = (TreeSet<Integer>) menge.headSet(5);
  for (Iterator it=m2.iterator();it.hasNext();)
   System.out.print(it.next()+" ");
  System.out.println();
   
  System.out.println();
  System.out.println("Alle Elemente groesser gleich 4:");
  m2 = (TreeSet<Integer>) menge.tailSet(4);
  for (Iterator it=m2.iterator();it.hasNext();)
   System.out.print(it.next()+" ");
  System.out.println();
   
  System.out.println();
  System.out.println("Alle Elemente groesser gleich 4 ");
  System.out.println("und echt kleiner als 7:");
  m2 = (TreeSet<Integer>) menge.subSet(4,7);
  for (Iterator it=m2.iterator();it.hasNext();)
   System.out.print(it.next()+" ");
  System.out.println();
   
 }

}

