1 dojo.provide("calitha.collections.AbstractSet");
  2 dojo.require("calitha.collections.ISet");
  3 dojo.require("calitha.collections.AbstractCollection");
  4 dojo.require("calitha.collections.util");
  5 
  6 dojo.declare("calitha.collections.AbstractSet", [calitha.collections.ISet, calitha.collections.AbstractCollection],
  7 /** @lends calitha.collections.AbstractSet# */
  8 {
  9     /**
 10      * @constructs
 11      * @extends calitha.collections.ISet
 12      * @extends calitha.collections.AbstractCollection
 13      */
 14     constructor: function()
 15     {
 16     }
 17     ,
 18     equals: function(/**Object*/ o)
 19     {
 20 	    if (o === this)
 21         {
 22 	        return true;
 23         }
 24 
 25 	    if (!(calitha.collections.util.isObjectInstanceOf(o, calitha.collections.ISet)))
 26         {
 27 	        return false;
 28         }
 29         //noinspection UnnecessaryLocalVariableJS
 30         var set = o;
 31 	    if (set.size() != this.size())
 32         {
 33 	        return false;
 34         }
 35         return this.containsAll(set);
 36     }
 37     ,
 38     hashCode: function()
 39     {
 40 	    var result = 0;
 41         var it = this.iterator();
 42         while (it.hasNext())
 43         {
 44             var obj = it.next();
 45             result += calitha.collections.util.hashCode(obj);
 46         }
 47         return result;
 48     }
 49 
 50 });
 51