Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / November 2007

Tip: Looking for answers? Try searching our database.

Mathematical set operations in Java / searching for library

Thread view: 
mowsen@googlemail.com - 03 Nov 2007 23:58 GMT
Dear Group,

i'm searching for a Java library which supports all ways of set
handling, like generating a set of all prime numbers up to 10000, diff
it to another set and so on.

Anyone a hint?

Thanks,
mowsen
Roedy Green - 04 Nov 2007 03:19 GMT
>i'm searching for a Java library which supports all ways of set
>handling, like generating a set of all prime numbers up to 10000, diff
>it to another set and so on.

see http://mindprod.com/jgloss/enumset.html
http://mindprod.com/jgloss/binary.html#BITSET
http://mindprod.com/products2.html#PRIMES

Signature

Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com

Robert Klemme - 04 Nov 2007 11:38 GMT
> i'm searching for a Java library which supports all ways of set
> handling, like generating a set of all prime numbers up to 10000, diff
> it to another set and so on.

java.util.Set and implementors.  Google will yield plenty of prime
number generation algorithms.

    robert
mowsen@googlemail.com - 07 Nov 2007 10:29 GMT
thanks. i'm not quite sure, but is it possible to define for example
all natural numbers easily with enumset/set?!

thanks,
moka
Eric Sosman - 07 Nov 2007 13:40 GMT
> thanks. i'm not quite sure, but is it possible to define for example
> all natural numbers easily with enumset/set?!

    If you can afford that much memory, I want to be your friend.

Signature

Eric Sosman
esosman@ieee-dot-org.invalid

Bent C Dalager - 07 Nov 2007 14:14 GMT
>thanks. i'm not quite sure, but is it possible to define for example
>all natural numbers easily with enumset/set?!

No. One reason is that the interface java.util.Set<E> requires you to
implement:

int size() - Returns the number of elements in this set (its
cardinality).

And the int data type does not define a bit pattern that means
"infinite". You could therefore not implement an infinite size set
(such as N) using java.util.Set while honouring the interface
requirements for that type.

Cheers,
    Bent D
Signature

Bent Dalager - bcd@pvv.org - http://www.pvv.org/~bcd
                                   powered by emacs

Robert Klemme - 10 Nov 2007 16:55 GMT
> thanks. i'm not quite sure, but is it possible to define for example
> all natural numbers easily with enumset/set?!

You did not mention infinite sets in your original posting...

I don't know what you intend to do but maybe a math system like
mathematica and similar is better suited to your needs.  There are even
free implementations available.

Cheers

    robert
Stefan Ram - 10 Nov 2007 17:24 GMT
>thanks. i'm not quite sure, but is it possible to define for
>example all natural numbers easily with enumset/set?!

 The set of all Java Integer objects (just written - never
 compiled, so there will still be errors, but you get the idea):

class Integers extends java.util.AbstractSet implements java.util.Set
{ public Integers(){} @java.lang.Override
 public void clear(){ throw new java.lang.UnsupportedOperationException; }
 @java.lang.Override public boolean contains( final java.lang.Object key )
 { return java.lang.Integer.class.isAssignableFrom( key.getClass()); }
 @java.lang.Override public boolean remove( final java.lang.Object key )
 { throw new java.lang.UnsupportedOperationException; }
 @java.lang.Override public int size()
 { return java.lang.Integer.MAX_VALUE; }
 @java.lang.Override public boolean add( final java.lang.Object arg0 )
 { throw new java.lang.UnsupportedOperationException; }
 @java.lang.Override public java.util.Iterator iterator()
 { return new java.util.Iterator()
   { int i = java.lang.Integer.MIN_VALUE;
     public boolean hasNext(){ return i + 1 > i; }
     public java.lang.Object next(){ return ++i; } public void remove()
     { throw new java.lang.UnsupportedOperationException; }}}}

 Mathematical integers can not all be represented as distinct
 objects or values by a computer, because they are not limited
 in size, so a storage for a single mathematical integer value
 would need to have more states the possible different states
 of our whole universe. This also holds for storages of sets of
 mathematical integers.
Daniel Pitts - 10 Nov 2007 18:39 GMT
>> thanks. i'm not quite sure, but is it possible to define for
>> example all natural numbers easily with enumset/set?!
[quoted text clipped - 26 lines]
>   of our whole universe. This also holds for storages of sets of
>   mathematical integers.

While the statement is true, the representation of infinite sets can be
accomplished in finite space.  You only need to abstract the behavior of
such a set.

For instance, setOfPrimes.intersect(setOfEvenNumbers) would be equal to
the set that contains "2".

While, I wouldn't want to write the implementation of those objects, it
is a feasible undertaking if you add appropriate restrictions on the
number of different types of sets you could do.

Also, if you can create a formula to iterate or calculate certain
properties of the set, then you needn't represent all the values in the set.

in setOfEvenNumbers:
public boolean contains(Integer o) {
   return o.intValue() % 2 == 0;
}

You might build an abstract interface to mathematical sets that is
different than the Java "Set" interface, as generally in Mathematics,
you specify rules, conditions, relationships, etc. for inclusion in a
set, rather than adding individual elements.  Java Collections are very
specifically designed to "hold" collections of Java Objects, not
mathematical abstractions.

There may or may not be such a library already created. I would google
for it before discounting the possibility.

Good luck,
Daniel.

Signature

Daniel Pitts' Tech Blog: <http://virtualinfinity.net/wordpress/>

Stefan Ram - 10 Nov 2007 18:52 GMT
>you specify rules, conditions, relationships, etc. for inclusion in a

 This is also known as »symbolic mathematics«
 in contrast to »numerical mathematics«.

>There may or may not be such a library already created.
>I would google for it before discounting the possibility.

 Or even use an old-fashioned catalogue, such as:

http://www.google.com/Top/Science/Math/Software/

 (Including some Java software or libraries.)
Stefan Ram - 10 Nov 2007 18:59 GMT
>i'm searching for a Java library which supports all ways of set
>handling, like generating a set of all prime numbers up to 10000, diff
>it to another set and so on.

 The efficient implementation depends on knowledge
 of implementation and expected usage (calls).

 A SetDiff, for example, could be done as

... class DiffSet ...
{ public Diff( final java.util.Set a, final java.util.Set b ) ...

 public boolean contains( final java.lang.Object o )
 { return a.contains( o )&& !b.contains( o ); }

 public java.util.Iterator iterator()
 { ... /* Use the iterator of a, skipping when b.contains( ... ) */ ... }

 A well-known DSL for set operations is SQL.
Lew - 10 Nov 2007 20:06 GMT
>   A SetDiff, for example, could be done as
>
[quoted text clipped - 8 lines]
>
>   A well-known DSL for set operations is SQL.

Another way to handle diffs:

public static <T> Set <T> diff( Set<? extends T> a, Set<? extends T> b )
{
  Set <T> diff = new HashSet <T> ( a );
  diff.removeAll( b );
  return diff;
}

If you don't mind changing the contents of 'a', youi can skip the wrapper
method and just use a.removeAll( b ).

Signature

Lew



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.