Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #7551

Re: BitSet vs BigInteger (false Android doc)

From Jan Burse <janburse@fastmail.fm>
Newsgroups comp.lang.java.programmer
Subject Re: BitSet vs BigInteger (false Android doc)
Date 2011-09-03 20:15 +0200
Organization albasani.net
Message-ID <j3tqr7$vp8$1@news.albasani.net> (permalink)
References <j3rbtv$d5g$1@news.albasani.net> <4e613b65$0$311$14726298@news.sunsite.dk> <yJCdnamwfpVooPzTnZ2dnUVZ_umdnZ2d@earthlink.com> <j3rflb$lh6$2@news.albasani.net> <KOmdnWyhfYV_FPzTnZ2dnUVZ_s-dnZ2d@earthlink.com>

Show all headers | View raw


Patricia Shanahan schrieb:
> On 9/2/2011 1:51 PM, Jan Burse wrote:
>> Patricia Shanahan schrieb:
>>> Also, they have more freedom of action in implementing BitSet
>>
>> True, actually I was expecting to see a more clever BitSet,
>> but in JDK 1.6.0_26 its just this long array.
>
> Are you looking at the actual Android implementations for the classes?
>
> Patricia

I don't think that Android uses some special BitSet resp. BigInteger,
since then classes are java.*.

But it looks that nevertheless the implementation in JDK and Android are 
not verbatim the same:

Here is the Android BitSet XOR:

             public void xor(BitSet bs) {
                 int bsActualLen = bs.getActualArrayLength();
                 if (bsActualLen > bits.length) {
                     long[] tempBits = new long[bsActualLen];
                     System.arraycopy(bs.bits, 0, tempBits, 0,
                             bs.actualArrayLength);
                     for (int i = 0; i < actualArrayLength; i++) {
                         tempBits[i] ^= bits[i];
                     }
                     bits = tempBits;
                     actualArrayLength = bsActualLen;
                     isLengthActual = !((actualArrayLength > 0) && 
(bits[actualArrayLength - 1] == 0));
                 } else {
                     long[] bsBits = bs.bits;
                     for (int i = 0; i < bsActualLen; i++) {
                         bits[i] ^= bsBits[i];
                     }
                     if (bsActualLen > actualArrayLength) {
                         actualArrayLength = bsActualLen;
                         isLengthActual = true;
                     }
                 }
                 needClear();
             }

	http://www.java2s.com/Open-Source/Android/android-core/platform-libcore/java/util/BitSet.java.htm

And here is the Oracle JDK BitSet XOR:


     public void xor(BitSet set) {
         int wordsInCommon = Math.min(wordsInUse, set.wordsInUse);

         if (wordsInUse < set.wordsInUse) {
             ensureCapacity(set.wordsInUse);
             wordsInUse = set.wordsInUse;
         }

     // Perform logical XOR on words in common
         for (int i = 0; i < wordsInCommon; i++)
         words[i] ^= set.words[i];

     // Copy any remaining words
     if (wordsInCommon < set.wordsInUse)
         System.arraycopy(set.words, wordsInCommon,
                  words, wordsInCommon,
                  set.wordsInUse - wordsInCommon);

         recalculateWordsInUse();
     checkInvariants();
     }



So basically the same representation and algorithm.
The Android seems to stem from Apache Harmony.

http://en.wikipedia.org/wiki/Apache_Harmony#Use_in_Android_SDK

Bye

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-02 21:48 +0200
  Re: BitSet vs BigInteger (false Android doc) Arne Vajhøj <arne@vajhoej.dk> - 2011-09-02 16:23 -0400
    Re: BitSet vs BigInteger (false Android doc) Patricia Shanahan <pats@acm.org> - 2011-09-02 13:34 -0700
      Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-02 22:51 +0200
        Re: BitSet vs BigInteger (false Android doc) Patricia Shanahan <pats@acm.org> - 2011-09-02 18:58 -0700
          Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-03 20:15 +0200
            Re: BitSet vs BigInteger (false Android doc) Patricia Shanahan <pats@acm.org> - 2011-09-03 12:37 -0700
              Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-03 22:46 +0200
                Re: BitSet vs BigInteger (false Android doc) Patricia Shanahan <pats@acm.org> - 2011-09-03 16:32 -0700
                Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-04 02:58 +0200
                Re: BitSet vs BigInteger (false Android doc) Arne Vajhøj <arne@vajhoej.dk> - 2011-09-05 19:32 -0400
                Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-06 08:58 +0200
                Re: BitSet vs BigInteger (false Android doc) Lew <lewbloch@gmail.com> - 2011-09-06 00:41 -0700
                Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-06 11:57 +0200
                Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-06 12:12 +0200
                Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-06 12:44 +0200
                Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-06 12:02 +0200
                Re: BitSet vs BigInteger (false Android doc) Patricia Shanahan <pats@acm.org> - 2011-09-06 13:38 -0700
                Re: BitSet vs BigInteger (false Android doc) Patricia Shanahan <pats@acm.org> - 2011-09-06 10:33 -0700
                Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-06 22:28 +0200
                Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-06 22:41 +0200
                Re: BitSet vs BigInteger (false Android doc) Patricia Shanahan <pats@acm.org> - 2011-09-06 14:34 -0700
                Re: BitSet vs BigInteger (false Android doc) Lew <lewbloch@gmail.com> - 2011-09-06 14:51 -0700
                Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-07 00:33 +0200
                Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-07 00:40 +0200
            Re: BitSet vs BigInteger (false Android doc) Arne Vajhøj <arne@vajhoej.dk> - 2011-09-05 19:26 -0400
      Re: BitSet vs BigInteger (false Android doc) Robert Klemme <shortcutter@googlemail.com> - 2011-09-03 17:01 +0200
    Re: BitSet vs BigInteger (false Android doc) Jan Burse <janburse@fastmail.fm> - 2011-09-02 22:49 +0200
      Re: BitSet vs BigInteger (false Android doc) Gene Wirchenko <genew@ocis.net> - 2011-09-02 14:48 -0700
  Re: BitSet vs BigInteger (false Android doc) Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-09-03 13:54 -0400

csiph-web