<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FApache_Common%2FCollection</id>
		<title>Java/Apache Common/Collection - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FApache_Common%2FCollection"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/Apache_Common/Collection&amp;action=history"/>
		<updated>2026-04-15T03:04:26Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java/Apache_Common/Collection&amp;diff=9047&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/Apache_Common/Collection&amp;diff=9047&amp;oldid=prev"/>
				<updated>2010-06-01T07:23:34Z</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;Версия 07:23, 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://jexp.ru/index.php?title=Java/Apache_Common/Collection&amp;diff=9046&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/Apache_Common/Collection&amp;diff=9046&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:48Z</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;== Bean Comparator ( Sorting based on Properties of class ) ==&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;
 &lt;br /&gt;
&lt;br /&gt;
package com.googelcode.jpractices.rumon;&lt;br /&gt;
import org.apache.rumons.lang.builder.ToStringBuilder;&lt;br /&gt;
/**&lt;br /&gt;
 * Copyright 2009 @ jPractices v 1.0&lt;br /&gt;
 * @SVN URL : http://jpractices.googlecode.ru&lt;br /&gt;
 * @author Ganesh Gowtham&lt;br /&gt;
 * @Homepage : http://ganesh.gowtham.googlepages.ru&lt;br /&gt;
 */&lt;br /&gt;
public class Person {&lt;br /&gt;
  private String firstName;&lt;br /&gt;
  private String lastName;&lt;br /&gt;
  private int salary;&lt;br /&gt;
  public Person(String firstName, String lastName, int salary) {&lt;br /&gt;
    super();&lt;br /&gt;
    this.firstName = firstName;&lt;br /&gt;
    this.lastName = lastName;&lt;br /&gt;
    this.salary = salary;&lt;br /&gt;
  }&lt;br /&gt;
  public String getFirstName() {&lt;br /&gt;
    return firstName;&lt;br /&gt;
  }&lt;br /&gt;
  public void setFirstName(String firstName) {&lt;br /&gt;
    this.firstName = firstName;&lt;br /&gt;
  }&lt;br /&gt;
  public String getLastName() {&lt;br /&gt;
    return lastName;&lt;br /&gt;
  }&lt;br /&gt;
  public void setLastName(String lastName) {&lt;br /&gt;
    this.lastName = lastName;&lt;br /&gt;
  }&lt;br /&gt;
  public int getSalary() {&lt;br /&gt;
    return salary;&lt;br /&gt;
  }&lt;br /&gt;
  public void setSalary(int salary) {&lt;br /&gt;
    this.salary = salary;&lt;br /&gt;
  }&lt;br /&gt;
  @Override&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return ToStringBuilder.reflectionToString(this);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
-------------&lt;br /&gt;
package com.googelcode.jpractices;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collections;&lt;br /&gt;
import java.util.ruparator;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import org.apache.rumons.beanutils.BeanComparator;&lt;br /&gt;
import com.googelcode.jpractices.rumon.Person;&lt;br /&gt;
/**&lt;br /&gt;
 * Copyright 2009 @ jPractices v 1.0&lt;br /&gt;
 * @SVN URL : http://jpractices.googlecode.ru&lt;br /&gt;
 * @author Ganesh Gowtham&lt;br /&gt;
 * @Homepage : http://ganesh.gowtham.googlepages.ru&lt;br /&gt;
 */&lt;br /&gt;
public class BeanComparatorExample {&lt;br /&gt;
  List&amp;lt;Person&amp;gt; personList = new ArrayList&amp;lt;Person&amp;gt;();&lt;br /&gt;
  /**&lt;br /&gt;
   * Basic method which creates the list of person object&amp;quot;s&lt;br /&gt;
   *&lt;br /&gt;
   */&lt;br /&gt;
  void setUpData() {&lt;br /&gt;
    personList.add(new Person(&amp;quot;jennefer&amp;quot;, &amp;quot;gowtham&amp;quot;, 35000));&lt;br /&gt;
    personList.add(new Person(&amp;quot;britney&amp;quot;, &amp;quot;spears&amp;quot;, 45000));&lt;br /&gt;
    personList.add(new Person(&amp;quot;tom&amp;quot;, &amp;quot;gowtham&amp;quot;, 36000));&lt;br /&gt;
    personList.add(new Person(&amp;quot;joe&amp;quot;, &amp;quot;dummy&amp;quot;, 45000));&lt;br /&gt;
  }&lt;br /&gt;
  void sortPersons(String propertyName)&lt;br /&gt;
  {&lt;br /&gt;
    Comparator&amp;lt;Person&amp;gt; comp = new BeanComparator(propertyName);&lt;br /&gt;
    Collections.sort(personList, comp);&lt;br /&gt;
    for (Person person : personList) {&lt;br /&gt;
      System.out.println(person);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    BeanComparatorExample beanComparatorExample = new BeanComparatorExample();&lt;br /&gt;
    beanComparatorExample.setUpData();&lt;br /&gt;
    beanComparatorExample.sortPersons(&amp;quot;firstName&amp;quot;);&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;
== Collection Bag ==&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;
import org.apache.rumons.collections.Bag;&lt;br /&gt;
import org.apache.rumons.collections.bag.HashBag;&lt;br /&gt;
import org.apache.rumons.collections.bag.TreeBag;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
public class CookieBagV1 {&lt;br /&gt;
  private Bag cookieBag;&lt;br /&gt;
  private Bag sortedCookieBag;&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    CookieBagV1 app = new CookieBagV1();&lt;br /&gt;
    app.prepareBags();&lt;br /&gt;
    app.printBagContents();&lt;br /&gt;
    app.addRandomCookies();&lt;br /&gt;
    app.printBagContents();&lt;br /&gt;
  }&lt;br /&gt;
  private void printBagContents() {&lt;br /&gt;
    System.err.println(&amp;quot;Cookie Bag Contents: &amp;quot; + cookieBag);&lt;br /&gt;
    System.err.println(&amp;quot;Sorted Cookie Bag Contents: &amp;quot; + sortedCookieBag);&lt;br /&gt;
  }&lt;br /&gt;
  private void addRandomCookies() {&lt;br /&gt;
    int count = (int)(Math.random() * 10);&lt;br /&gt;
    int pick  = (int)(Math.random() * 10);&lt;br /&gt;
    pick = pick &amp;gt; 6 ? 6 : pick;&lt;br /&gt;
    if (count &amp;gt; 5) cookieBag.add(cookieJar[pick], count);&lt;br /&gt;
    else sortedCookieBag.add(cookieJar[pick], count);&lt;br /&gt;
  }&lt;br /&gt;
  private void prepareBags() {&lt;br /&gt;
    prepareCookieBag();&lt;br /&gt;
    prepareSortedCookieBag();&lt;br /&gt;
  }&lt;br /&gt;
  private void prepareCookieBag() {&lt;br /&gt;
    cookieBag = new HashBag(Arrays.asList(cookieJar));&lt;br /&gt;
  }&lt;br /&gt;
  private void prepareSortedCookieBag() {&lt;br /&gt;
    sortedCookieBag = new TreeBag(Arrays.asList(cookieJar));&lt;br /&gt;
  }&lt;br /&gt;
  private String[] cookieJar =&lt;br /&gt;
    {&amp;quot;Bar&amp;quot;, &amp;quot;Drop&amp;quot;, &amp;quot;Brownies&amp;quot;, &amp;quot;Cut Out&amp;quot;, &amp;quot;Molded&amp;quot;, &amp;quot;Sliced&amp;quot;, &amp;quot;No Bake&amp;quot;};&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;
&lt;br /&gt;
== Collection BidiMap ==&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;
import org.apache.rumons.collections.BidiMap;&lt;br /&gt;
import org.apache.rumons.collections.bidimap.DualHashBidiMap;&lt;br /&gt;
import org.apache.rumons.collections.bidimap.UnmodifiableBidiMap;&lt;br /&gt;
public class BidiMapExample {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    BidiMap agentToCode = new DualHashBidiMap();&lt;br /&gt;
    agentToCode.put(&amp;quot;007&amp;quot;, &amp;quot;Bond&amp;quot;);&lt;br /&gt;
    agentToCode.put(&amp;quot;006&amp;quot;, &amp;quot;Joe&amp;quot;);&lt;br /&gt;
    agentToCode = UnmodifiableBidiMap.decorate(agentToCode);&lt;br /&gt;
    agentToCode.put(&amp;quot;002&amp;quot;, &amp;quot;Fairbanks&amp;quot;); // throws Exception&lt;br /&gt;
    agentToCode.remove(&amp;quot;007&amp;quot;); // throws Exception&lt;br /&gt;
    agentToCode.removeValue(&amp;quot;Bond&amp;quot;); // throws Exception&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;
&lt;br /&gt;
== Collection Buffer ==&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;
import org.apache.rumons.collections.Buffer;&lt;br /&gt;
import org.apache.rumons.collections.buffer.BlockingBuffer;&lt;br /&gt;
import org.apache.rumons.collections.buffer.PriorityBuffer;&lt;br /&gt;
public class BufferExample {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Buffer buffer = new PriorityBuffer();&lt;br /&gt;
    buffer.add(&amp;quot;2&amp;quot;);&lt;br /&gt;
    buffer.add(&amp;quot;1&amp;quot;);&lt;br /&gt;
    buffer = BlockingBuffer.decorate(buffer);&lt;br /&gt;
    buffer.remove();&lt;br /&gt;
    System.err.println(buffer);&lt;br /&gt;
    buffer.clear();&lt;br /&gt;
    AddElementThread runner = new AddElementThread(buffer);&lt;br /&gt;
    runner.start();&lt;br /&gt;
    buffer.remove();&lt;br /&gt;
    System.err.println(buffer);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class AddElementThread extends Thread {&lt;br /&gt;
  private Buffer buffer;&lt;br /&gt;
  public AddElementThread(Buffer buffer) {&lt;br /&gt;
    this.buffer = buffer;&lt;br /&gt;
  }&lt;br /&gt;
  public void run() {&lt;br /&gt;
    try {&lt;br /&gt;
      sleep(2000);&lt;br /&gt;
    } catch (InterruptedException ie) {}&lt;br /&gt;
    buffer.add(&amp;quot;3&amp;quot;);&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;
&lt;br /&gt;
== Collection Closure ==&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;
import org.apache.rumons.collections.Closure;&lt;br /&gt;
import org.apache.rumons.collections.ClosureUtils;&lt;br /&gt;
import org.apache.rumons.collections.PredicateUtils;&lt;br /&gt;
public class ClosureExample {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Closure ifClosure = ClosureUtils.ifClosure(&lt;br /&gt;
                       PredicateUtils.equalPredicate(new Integer(20)),&lt;br /&gt;
                       ClosureUtils.nopClosure(),&lt;br /&gt;
                       ClosureUtils.exceptionClosure());&lt;br /&gt;
    ifClosure.execute(new Integer(20));&lt;br /&gt;
//    ifClosure.execute(new Integer(30));&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;
&lt;br /&gt;
== Comparator Example For BuildIn Data Type ==&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;
import org.apache.rumons.collections.ruparatorUtils;&lt;br /&gt;
import org.apache.rumons.collections.ruparators.BooleanComparator;&lt;br /&gt;
import org.apache.rumons.collections.ruparators.FixedOrderComparator;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.ruparator;&lt;br /&gt;
public class ComparatorExampleForBuildInDataType {&lt;br /&gt;
  private static Comparator boolComp;&lt;br /&gt;
  private static Comparator fixedComp;&lt;br /&gt;
  private static Boolean boolParams[] = {new Boolean(true), new Boolean(true),&lt;br /&gt;
                                         new Boolean(false), new Boolean(false)};&lt;br /&gt;
  private static String  stringParams[] = {&amp;quot;Russia&amp;quot;, &amp;quot;Canada&amp;quot;, &amp;quot;USA&amp;quot;, &amp;quot;Australia&amp;quot;, &amp;quot;India&amp;quot;};&lt;br /&gt;
  &lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    ComparatorExampleForBuildInDataType example = new ComparatorExampleForBuildInDataType();&lt;br /&gt;
    example.createComparators();&lt;br /&gt;
    Arrays.sort(boolParams, boolComp); &lt;br /&gt;
    example.printArray(boolParams);&lt;br /&gt;
    Arrays.sort(stringParams);&lt;br /&gt;
    example.printArray(stringParams);&lt;br /&gt;
    Arrays.sort(stringParams, fixedComp);&lt;br /&gt;
    example.printArray(stringParams);&lt;br /&gt;
  }&lt;br /&gt;
  private void createComparators() {&lt;br /&gt;
    boolComp = ComparatorUtils.booleanComparator(true);&lt;br /&gt;
    fixedComp = new FixedOrderComparator(stringParams);&lt;br /&gt;
  }&lt;br /&gt;
  private void printArray(Object[] array) {&lt;br /&gt;
    for(int i = 0; i &amp;lt; array.length; i++)&lt;br /&gt;
      System.err.println(array[i]);&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;
&lt;br /&gt;
== Comparator Example For User Defined Class ==&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;
import org.apache.rumons.collections.ruparators.ruparatorChain;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.ruparator;&lt;br /&gt;
public class ComparatorExampleForUserDefinedClass {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    prepareData();&lt;br /&gt;
    ComparatorChain chain = new ComparatorChain();&lt;br /&gt;
    chain.addComparator(new NameComparator());&lt;br /&gt;
    chain.addComparator(new NumberComparator());&lt;br /&gt;
    printArray(dataArray);&lt;br /&gt;
    Arrays.sort(dataArray, chain);&lt;br /&gt;
    printArray(dataArray);&lt;br /&gt;
  }&lt;br /&gt;
  private static void prepareData() {&lt;br /&gt;
    dataArray[0] = &amp;quot;S4&amp;quot;;&lt;br /&gt;
    dataArray[1] = &amp;quot;Sa&amp;quot;;&lt;br /&gt;
    dataArray[2] = &amp;quot;K&amp;quot;;&lt;br /&gt;
    dataArray[3] = &amp;quot;K4&amp;quot;;&lt;br /&gt;
    dataArray[4] = &amp;quot;W&amp;quot;;&lt;br /&gt;
    dataArray[5] = &amp;quot;Sha&amp;quot;;&lt;br /&gt;
    dataArray[6] = &amp;quot;War&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  private static void printArray(String[] array) {&lt;br /&gt;
    System.err.println(&amp;quot;---- Elements in Array ---- &amp;quot;);&lt;br /&gt;
    for(int i = 0; i &amp;lt; array.length; i++) {&lt;br /&gt;
      System.err.print(array[i] + &amp;quot;, &amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    System.err.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  private static String[] dataArray = new String[7];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class NameComparator implements Comparator {&lt;br /&gt;
  public int compare(Object o1, Object o2) {&lt;br /&gt;
    if(o1 instanceof String &amp;amp;&amp;amp; o2 instanceof String) {&lt;br /&gt;
      String s1 = (String)o1;&lt;br /&gt;
      String s2 = (String)o2;&lt;br /&gt;
      s1 = s1.substring(0, s1.indexOf(&amp;quot;-&amp;quot;));&lt;br /&gt;
      s2 = s2.substring(0, s2.indexOf(&amp;quot;-&amp;quot;));&lt;br /&gt;
      return s1.rupareTo(s2);&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class NumberComparator implements Comparator {&lt;br /&gt;
  public int compare(Object o1, Object o2) {&lt;br /&gt;
    if(o1 instanceof String &amp;amp;&amp;amp; o2 instanceof String) {&lt;br /&gt;
      String s1 = (String)o1;&lt;br /&gt;
      String s2 = (String)o2;&lt;br /&gt;
      Integer i1 = new Integer(s1.substring(s1.indexOf(&amp;quot;-&amp;quot;), s1.length()));&lt;br /&gt;
      Integer i2 = new Integer(s2.substring(s2.indexOf(&amp;quot;-&amp;quot;), s2.length()));&lt;br /&gt;
      return i1.rupareTo(i2);&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&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;
&lt;br /&gt;
== Cookie Bag 2 ==&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;
import org.apache.rumons.collections.Bag;&lt;br /&gt;
import org.apache.rumons.collections.bag.HashBag;&lt;br /&gt;
import org.apache.rumons.collections.bag.TreeBag;&lt;br /&gt;
import org.apache.rumons.collections.TransformerUtils;&lt;br /&gt;
import org.apache.rumons.collections.bag.TransformedBag;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
public class CookieBagV2 {&lt;br /&gt;
  private Bag cookieBag;&lt;br /&gt;
  private Bag sortedCookieBag;&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    CookieBagV2 app = new CookieBagV2();&lt;br /&gt;
    app.prepareBags();&lt;br /&gt;
    app.printBagContents();&lt;br /&gt;
    app.addRandomCookies();&lt;br /&gt;
    app.printBagContents();&lt;br /&gt;
  }&lt;br /&gt;
  private void printBagContents() {&lt;br /&gt;
    System.err.println(&amp;quot;Cookie Bag Contents: &amp;quot; + cookieBag);&lt;br /&gt;
    System.err.println(&amp;quot;Sorted Cookie Bag Contents: &amp;quot; + sortedCookieBag);&lt;br /&gt;
  }&lt;br /&gt;
  private void addRandomCookies() {&lt;br /&gt;
    int count = (int)(Math.random() * 10);&lt;br /&gt;
    int pick  = (int)(Math.random() * 10);&lt;br /&gt;
    pick = pick &amp;gt; 6 ? 6 : pick;&lt;br /&gt;
    if (count &amp;gt; 5) cookieBag.add(cookieJar[pick], count);&lt;br /&gt;
    else sortedCookieBag.add(cookieJar[pick], count);&lt;br /&gt;
  }&lt;br /&gt;
  private void prepareBags() {&lt;br /&gt;
    prepareCookieBag();&lt;br /&gt;
    prepareSortedCookieBag();&lt;br /&gt;
  }&lt;br /&gt;
  private void prepareCookieBag() {&lt;br /&gt;
    cookieBag =&lt;br /&gt;
      TransformedBag.decorate(&lt;br /&gt;
        new HashBag(Arrays.asList(cookieJar)),&lt;br /&gt;
        TransformerUtils.constantTransformer(cookieJar[2]));&lt;br /&gt;
    // cookieBag.addAll(Arrays.asList(cookieJar));&lt;br /&gt;
  }&lt;br /&gt;
  private void prepareSortedCookieBag() {&lt;br /&gt;
    sortedCookieBag = new TreeBag(Arrays.asList(cookieJar));&lt;br /&gt;
  }&lt;br /&gt;
  private String[] cookieJar =&lt;br /&gt;
    {&amp;quot;Bar&amp;quot;, &amp;quot;Drop&amp;quot;, &amp;quot;Brownies&amp;quot;, &amp;quot;Cut Out&amp;quot;, &amp;quot;Molded&amp;quot;, &amp;quot;Sliced&amp;quot;, &amp;quot;No Bake&amp;quot;};&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;
&lt;br /&gt;
== Factory Example 1 ==&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;
import org.apache.rumons.collections.Factory;&lt;br /&gt;
import org.apache.rumons.collections.FactoryUtils;&lt;br /&gt;
public class FactoryExampleV1 {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Factory bufferFactory = FactoryUtils.instantiateFactory(StringBuffer.class,&lt;br /&gt;
                          new Class[] {String.class},&lt;br /&gt;
                          new Object[] {&amp;quot;a string&amp;quot;});&lt;br /&gt;
    System.err.println(bufferFactory.create());&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;
&lt;br /&gt;
== HashMap Example 1 ==&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;
import org.apache.rumons.collections.BidiMap;&lt;br /&gt;
import org.apache.rumons.collections.bidimap.DualHashBidiMap;&lt;br /&gt;
public class HashMapExampleV1 {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    BidiMap agentToCode = new DualHashBidiMap();&lt;br /&gt;
    agentToCode.put(&amp;quot;007&amp;quot;, &amp;quot;Bond&amp;quot;);&lt;br /&gt;
    agentToCode.put(&amp;quot;006&amp;quot;, &amp;quot;Trevelyan&amp;quot;);&lt;br /&gt;
    agentToCode.put(&amp;quot;002&amp;quot;, &amp;quot;Fairbanks&amp;quot;);&lt;br /&gt;
    System.err.println(&amp;quot;Agent name from code: &amp;quot; + agentToCode.get(&amp;quot;007&amp;quot;));&lt;br /&gt;
    System.err.println(&amp;quot;Code from Agent name: &amp;quot; + agentToCode.getKey(&amp;quot;Bond&amp;quot;));&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;
&lt;br /&gt;
== List Example 1 ==&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;
import org.apache.rumons.collections.list.TreeList;&lt;br /&gt;
import org.apache.rumons.collections.list.SetUniqueList;&lt;br /&gt;
import org.apache.rumons.collections.list.CursorableLinkedList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import java.util.ListIterator;&lt;br /&gt;
public class ListExampleV1 {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    ListExampleV1 listExample = new ListExampleV1();&lt;br /&gt;
    listExample.createLists();&lt;br /&gt;
    uniqueList.add(&amp;quot;Value1&amp;quot;);&lt;br /&gt;
    uniqueList.add(&amp;quot;Value1&amp;quot;); &lt;br /&gt;
    System.err.println(uniqueList); // should contain only one element&lt;br /&gt;
    cursorList.add(&amp;quot;Element1&amp;quot;); &lt;br /&gt;
    cursorList.add(&amp;quot;Element2&amp;quot;); &lt;br /&gt;
    cursorList.add(&amp;quot;Element3&amp;quot;); &lt;br /&gt;
    ListIterator iterator = cursorList.listIterator();&lt;br /&gt;
    iterator.next(); // cursor now between 0th and 1st element&lt;br /&gt;
    iterator.add(&amp;quot;Element2.5&amp;quot;); // adds this between 0th and 1st element&lt;br /&gt;
    System.err.println(cursorList); // modification done to the iterator are visible in the list&lt;br /&gt;
  }&lt;br /&gt;
  private void createLists() {&lt;br /&gt;
    uniqueList = SetUniqueList.decorate(new TreeList());&lt;br /&gt;
    cursorList = new CursorableLinkedList();&lt;br /&gt;
  }&lt;br /&gt;
  private static List uniqueList;&lt;br /&gt;
  private static List cursorList;&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;
&lt;br /&gt;
== MapHeaven 1 ==&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;
import java.util.Map;&lt;br /&gt;
import java.util.Date;&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import org.apache.rumons.collections.map.LazyMap;&lt;br /&gt;
import org.apache.rumons.collections.FactoryUtils;&lt;br /&gt;
import org.apache.rumons.collections.map.IdentityMap;&lt;br /&gt;
import org.apache.rumons.collections.map.CaseInsensitiveMap;&lt;br /&gt;
public class MapHeavenV1 {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    MapHeavenV1 instance = new MapHeavenV1();&lt;br /&gt;
    instance.createMaps();&lt;br /&gt;
    instance.testMaps();&lt;br /&gt;
  }&lt;br /&gt;
  private void testMaps() {&lt;br /&gt;
    cIMap.put(&amp;quot;key1&amp;quot;, &amp;quot;value1&amp;quot;);&lt;br /&gt;
    cIMap.put(&amp;quot;key2&amp;quot;, &amp;quot;value2&amp;quot;);&lt;br /&gt;
    cIMap.put(&amp;quot;KeY1&amp;quot;, &amp;quot;value3&amp;quot;);&lt;br /&gt;
    System.err.println(&amp;quot;Value of key1: &amp;quot; + cIMap.get(&amp;quot;key1&amp;quot;)); // value3 because it is case insensitive&lt;br /&gt;
    Integer identRef = new Integer(1);&lt;br /&gt;
    Integer identRef2 = new Integer(1);&lt;br /&gt;
    identMap.put(identRef, &amp;quot;value1&amp;quot;);&lt;br /&gt;
    identMap.put(identRef2, &amp;quot;value3&amp;quot;);&lt;br /&gt;
    System.err.println(&amp;quot;Value of identRef2: &amp;quot; + identMap.get(identRef2)); // value 3 even though both identRef and identRef2 are equal&lt;br /&gt;
    System.err.println(lazyMap); // only creates elements when they are accessed&lt;br /&gt;
    lazyMap.get(&amp;quot;EmptyBuffer&amp;quot;);&lt;br /&gt;
    System.err.println(lazyMap);&lt;br /&gt;
  }&lt;br /&gt;
  private void createMaps() {&lt;br /&gt;
    cIMap = new CaseInsensitiveMap();&lt;br /&gt;
    identMap = new IdentityMap();&lt;br /&gt;
    lazyMap = LazyMap.decorate(&lt;br /&gt;
      new HashMap(),&lt;br /&gt;
      FactoryUtils.instantiateFactory(StringBuffer.class));&lt;br /&gt;
  }&lt;br /&gt;
  private CaseInsensitiveMap cIMap;&lt;br /&gt;
  private IdentityMap identMap;&lt;br /&gt;
  private Map lazyMap;&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;
&lt;br /&gt;
== Multi Key Example 1 ==&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;
import java.util.HashMap;&lt;br /&gt;
public class MultiKeyExampleV1 {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    HashMap codeToText_en = new HashMap();&lt;br /&gt;
    codeToText_en.put(&amp;quot;GM&amp;quot;, &amp;quot;Good Morning&amp;quot;);&lt;br /&gt;
    codeToText_en.put(&amp;quot;GN&amp;quot;, &amp;quot;Good Night&amp;quot;);&lt;br /&gt;
    codeToText_en.put(&amp;quot;GE&amp;quot;, &amp;quot;Good Evening&amp;quot;);&lt;br /&gt;
    HashMap codeToText_de = new HashMap();&lt;br /&gt;
    codeToText_de.put(&amp;quot;GM&amp;quot;, &amp;quot;Guten Morgen&amp;quot;);&lt;br /&gt;
    codeToText_de.put(&amp;quot;GE&amp;quot;, &amp;quot;Guten Abend&amp;quot;);&lt;br /&gt;
    codeToText_de.put(&amp;quot;GN&amp;quot;, &amp;quot;Guten Nacht&amp;quot;);&lt;br /&gt;
    HashMap langToMap = new HashMap();&lt;br /&gt;
    langToMap.put(&amp;quot;en&amp;quot;, codeToText_en);&lt;br /&gt;
    langToMap.put(&amp;quot;de&amp;quot;, codeToText_de);&lt;br /&gt;
    System.err.println(&amp;quot;Good Evening in English: &amp;quot; +&lt;br /&gt;
      ((HashMap)langToMap.get(&amp;quot;en&amp;quot;)).get(&amp;quot;GE&amp;quot;));&lt;br /&gt;
    System.err.println(&amp;quot;Good Night in German: &amp;quot; +&lt;br /&gt;
      ((HashMap)langToMap.get(&amp;quot;de&amp;quot;)).get(&amp;quot;GN&amp;quot;));&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;
&lt;br /&gt;
== MultiKey Example 2 ==&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;
import java.util.HashMap;&lt;br /&gt;
import org.apache.rumons.collections.keyvalue.MultiKey;&lt;br /&gt;
public class MultiKeyExampleV2 {&lt;br /&gt;
  private static HashMap codeAndLangToText;&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    codeAndLangToText = new HashMap();&lt;br /&gt;
    addMultiKeyAndValue(&amp;quot;en&amp;quot;, &amp;quot;GM&amp;quot;, &amp;quot;Good Morning&amp;quot;);&lt;br /&gt;
    addMultiKeyAndValue(&amp;quot;en&amp;quot;, &amp;quot;GE&amp;quot;, &amp;quot;Good Evening&amp;quot;);&lt;br /&gt;
    addMultiKeyAndValue(&amp;quot;en&amp;quot;, &amp;quot;GN&amp;quot;, &amp;quot;Good Night&amp;quot;);&lt;br /&gt;
    addMultiKeyAndValue(&amp;quot;de&amp;quot;, &amp;quot;GM&amp;quot;, &amp;quot;Guten Morgen&amp;quot;);&lt;br /&gt;
    addMultiKeyAndValue(&amp;quot;de&amp;quot;, &amp;quot;GE&amp;quot;, &amp;quot;Guten Abend&amp;quot;);&lt;br /&gt;
    addMultiKeyAndValue(&amp;quot;de&amp;quot;, &amp;quot;GN&amp;quot;, &amp;quot;Guten Nacht&amp;quot;);&lt;br /&gt;
    System.err.println(&amp;quot;Good Evening in English: &amp;quot; +&lt;br /&gt;
      codeAndLangToText.get(new MultiKey(&amp;quot;en&amp;quot;, &amp;quot;GE&amp;quot;)));&lt;br /&gt;
    System.err.println(&amp;quot;Good Night in German: &amp;quot; +&lt;br /&gt;
      codeAndLangToText.get(new MultiKey(&amp;quot;de&amp;quot;, &amp;quot;GN&amp;quot;)));&lt;br /&gt;
  }&lt;br /&gt;
  private static void addMultiKeyAndValue(&lt;br /&gt;
    Object key1, Object key2, Object value) {&lt;br /&gt;
    MultiKey key = new MultiKey(key1, key2);&lt;br /&gt;
    codeAndLangToText.put(key, value);&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;
&lt;br /&gt;
== Set Example 1 ==&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;
import org.apache.rumons.collections.set.MapBackedSet;&lt;br /&gt;
import java.util.Map;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
public class SetExampleV1 {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    // create a Map&lt;br /&gt;
    Map map = new HashMap();&lt;br /&gt;
    map.put(&amp;quot;Key1&amp;quot;, &amp;quot;Value1&amp;quot;);&lt;br /&gt;
    // create the decoration&lt;br /&gt;
    Set set = MapBackedSet.decorate(map);&lt;br /&gt;
    map.put(&amp;quot;Key2&amp;quot;, &amp;quot;Any dummy value&amp;quot;);&lt;br /&gt;
    set.add(&amp;quot;Key3&amp;quot;);&lt;br /&gt;
    Iterator itr = set.iterator();&lt;br /&gt;
    while(itr.hasNext()) {&lt;br /&gt;
      System.err.println(itr.next());&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;
&lt;br /&gt;
== Set Example 2 ==&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;
import org.apache.rumons.collections.collection.*;&lt;br /&gt;
import org.apache.rumons.collections.set.*;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.Collection;&lt;br /&gt;
public class SetExampleV2 {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    // create two sets&lt;br /&gt;
    Set set1 = new HashSet();&lt;br /&gt;
    set1.add(&amp;quot;Red&amp;quot;);&lt;br /&gt;
    set1.add(&amp;quot;Green&amp;quot;);&lt;br /&gt;
    Set set2 = new HashSet();&lt;br /&gt;
    set2.add(&amp;quot;Yellow&amp;quot;);&lt;br /&gt;
    set2.add(&amp;quot;Red&amp;quot;);&lt;br /&gt;
    // create a composite set out of these two&lt;br /&gt;
    CompositeSet composite = new CompositeSet();&lt;br /&gt;
    // set the class that handles additions, conflicts etc&lt;br /&gt;
    // composite.setMutator(new CompositeMutator());&lt;br /&gt;
    // initialize the composite with the sets&lt;br /&gt;
    // Cannot be used if set1 and set2 intersect is not null and&lt;br /&gt;
    // a strategy to deal with it has not been set&lt;br /&gt;
    composite.addComposited(new Set[] {set1, set2});&lt;br /&gt;
    // do some addition/deletions&lt;br /&gt;
    // composite.add(&amp;quot;Pink&amp;quot;);&lt;br /&gt;
    // composite.remove(&amp;quot;Green&amp;quot;);&lt;br /&gt;
    // whats left in the composite?&lt;br /&gt;
    Iterator itr = composite.iterator();&lt;br /&gt;
    while(itr.hasNext()) {&lt;br /&gt;
      System.err.println(itr.next());&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class CompositeMutator implements CompositeSet.SetMutator {&lt;br /&gt;
  public void resolveCollision(&lt;br /&gt;
    CompositeSet comp,&lt;br /&gt;
    Set existing,&lt;br /&gt;
    Set added,&lt;br /&gt;
    Collection intersection) {&lt;br /&gt;
    added.removeAll(intersection);&lt;br /&gt;
  }&lt;br /&gt;
  public boolean add(&lt;br /&gt;
    CompositeCollection collection,&lt;br /&gt;
    Collection[] collections,&lt;br /&gt;
    Object obj) {&lt;br /&gt;
    return collections[0].add(obj);&lt;br /&gt;
  }&lt;br /&gt;
  public boolean remove(&lt;br /&gt;
    CompositeCollection collection,&lt;br /&gt;
    Collection[] collections,&lt;br /&gt;
    Object obj) {&lt;br /&gt;
    return collections[0].remove(obj);&lt;br /&gt;
  }&lt;br /&gt;
  public boolean addAll(&lt;br /&gt;
    CompositeCollection collection,&lt;br /&gt;
    Collection[] collections,&lt;br /&gt;
    Collection coll) {&lt;br /&gt;
    return collections[0].addAll(coll);&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;
&lt;br /&gt;
== Transformer Example ==&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;
import org.apache.rumons.collections.Transformer;&lt;br /&gt;
import org.apache.rumons.collections.TransformerUtils;&lt;br /&gt;
public class TransformerExampleV1 {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Transformer transformer = TransformerUtils.invokerTransformer(&lt;br /&gt;
                               &amp;quot;append&amp;quot;,&lt;br /&gt;
                               new Class[] {String.class},&lt;br /&gt;
                               new Object[] {&amp;quot; a Transformer?&amp;quot;});&lt;br /&gt;
    Object newObject =  transformer.transform(new StringBuffer(&amp;quot;Are you&amp;quot;));&lt;br /&gt;
    System.err.println(newObject);&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>