در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش جاوا (Java) قسمت 42 : داده ساختار BitSet

با سلام به همه دوستان و همراهان Itpro . در این مطلب نیز قصد دارم یکی دیگر از داده ساختارهای موجود در زبان قدرتمند جاوا را شرح دهم. داده ساختاری که قصد دارم توضیح دهم BitSet نام دارد.

BitSet

کلاس BitSet یک گروه از بیت ها و فلگ ها را تعریف می کند که می تواند یک مجموعه باشد. این کلاس زمانی که می خواهید مقادیر منطقی و بولین را نگهداری کنید بسیار مفید خواهد بود. به این شکل که شما به ازای هر مقدار یک بیت را صفر یا یک می کنید. به عبارت دیگر این کلاس یک آرایه از بیت ها را نگهداری می کند. آرایه موجود در BitSet می تواند به هر اندازه که لازم باشد بزرگ شود. این کلاس یک کلاس قدیمی است ولی در زمان نسخه دوم جاوا بازمهندسی شد. این کلاس دو constructor دارد که یکی همان constructor پیش فرض کلاس ها می باشد و دیگری یک ورودی از نوع int دریافت می کند که سایز آرایه BitSet می باشد. متدهایی که این کلاس تعریف می کند شامل اعمال منطقی مختلفی است که بر روی بیت ها انجام می شود که در ادامه به شرح آنها می پردازیم.

متدهای کلاس BitSet

  1. متد and: این متد یک ورودی از نوع BitSet دارد و بیت های شئ فراخونی کننده را با بیت های شئ ورودی and می کند و نتیجه را در شئ فراخوانی کننده می ریزد.
  2. متد andNot: این متد مانند متد and عمل می کند و دقیقا شبیه متد and است با این تفاوت که عمل andNot را بر روی بیت ها انجام می دهد نه عمل and
  3. متد cardinality این متد تعداد بیتهای شئ را برمی گرداند.
  4. متد clear این متد سه شکل دارد در شکل اول بدون ورودی بوده همه ی بیتهای یک شئ را صفر می کند و در شکل دوم یک مقدار int به عنوان ورودی دریافت می کند که این ورودی شماره بیتی است که قرار است صفر شود. و در شکل سوم دو ورودی دارد که ورودی اول نقطه شروع و ورودی دوم نقطه پایان بازه ای است که می خواهیم صفر کنیم. کلاس BitSet همچنین دارای متد equals برای مقایسه بین دوشئ می باشد.
  5. متد flip این متد دارای دو شکل است. یکی با یک ورودی و دیگری با دو ورودی در شکل تک ورودی این متد یک شماره بیت به متد داده می شود و وظیفه متد این است که ان را تغییر حالت بدهد یعنی اگر صفر است به یک و بالعکس تغییر دهد. در حالت دوم این متد اندیس شروع و اندیس پایان به عنوان ورودی دریافت شده و بازه بین شروع و پایان تغییر داده می شود.
  6. متد get نسخه اول این متد دارای یک ورودی است که اندیس یک بیت را مشخص می کند و مقدار آن بیت را برمی گرداند. و نسخه دوم این متد اندیس شروع و پایان را گرفته و بیت های آن بازه را در قالب یک شئ BitSet برمی گرداند دقت داشته باشید که در نسخه اول این متد خروجی به صورت بولین خواهد بود.
  7. متد intersects این متد یک ورودی از نوع BitSet دارد و خروجی آن از نوع بولین است. وظیفه این متد این است که اگر حداقل یک بیت در هر کدام از دو شئ فراخوانی کننده و شئ ورودی با اندیس برابر یک باشد مقدار true را برمی گرداند.
  8. متد isEmpty این متد مشخص می کند که آیا همه بیت های شئ صفر هستند یا خیر. اگر همه ی بیت ها صفر باشند مقدار true برگردانده خواهد شد.
  9. برای گرفتن طول آرایه کلاس Bitset از متد size استفاده می کنیم و برای پیدا کردن اندیس آخرین بیت 1 از متد length استفاده می نماییم.
  10. متدهای nextClearBit, nextSetBit این متدها یک اندیس ورودی دارند که اندیس شروع عملیات را مشخص می کند. وظیفه این متدها این است که از اندیس شروع شروع کرده و متد nextClearBit اندیس اولین بیت صفر و متد nextSetBit اندیس اولین بیت 1 را برمی گرداند.
  11. متد or این متد شبیه همان عمل متد and است با این تفاوت که بیت ها را با هم or می کند.
  12. متد set: این متد دارای سه شکل است و برعکس متد clear عمل می کند.
  13. متد xor این متد یک شئ از نوع BitSet را دریافت می کند و دو شئ BitSet را با هم xor می نماید. عمل xor به شکلی است که اگر هر دو بیت با هم 0 باشند مقدار 0 و اگر دو بیت با هم 1 باشند مقدار 0 و اگر یکی 0 و یکی 1 باشد مقدار 1 برمی گرداند.

برای درک بهتر متدهای گفته شده به برنامه زیر دقت کنید.

import java.util.BitSet;

public class BitSetDemo {

  public static void main(String args[]) {
     BitSet bits1 = new BitSet(16);
     BitSet bits2 = new BitSet(16);
      
     // set some bits
     for(int i=0; i<16; i++) {
        if((i%2) == 0) bits1.set(i);
        if((i%5) != 0) bits2.set(i);
     }
     System.out.println("Initial pattern in bits1: ");
     System.out.println(bits1);
     System.out.println("\nInitial pattern in bits2: ");
     System.out.println(bits2);

     // AND bits
     bits2.and(bits1);
     System.out.println("\nbits2 AND bits1: ");
     System.out.println(bits2);

     // OR bits
     bits2.or(bits1);
     System.out.println("\nbits2 OR bits1: ");
     System.out.println(bits2);

     // XOR bits
     bits2.xor(bits1);
     System.out.println("\nbits2 XOR bits1: ");
     System.out.println(bits2);
  }
}

خروجی برنامه بالا به شکل زیر خواهد بود:

Initial pattern in bits1:
{0, 2, 4, 6, 8, 10, 12, 14}

Initial pattern in bits2:
{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}

bits2 AND bits1:
{2, 4, 6, 8, 12, 14}

bits2 OR bits1:
{0, 2, 4, 6, 8, 10, 12, 14}

bits2 XOR bits1:
{}

Itpro باشید

نویسنده: مهدی عادلی فر

منبع: جزیره برنامه نویسی و توسعه نرم افزار وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.

#داده_ساختار_ها_در_جاوا #آموزش_برنامه_نویسی_جاوا #کار_با_بیت_ها_در_جاوا #آموزش_ساختمان_داده #آموزش_جاوا #آموزش_گام_به_گام_جاوا #ساختمان_داده_ها_در_جاوا #کلاس_bitset #دوره_آموزشی_جاوا
عنوان
1 آموزش جاوا (Java) قسمت 1 : معرفی ، خصوصیات و شروع به کار رایگان
2 آموزش جاوا (Java) قسمت 2 : شی گرایی قسمت یک رایگان
3 آموزش جاوا (Java) قسمت 3: شی گرایی قسمت دو رایگان
4 آموزش جاوا (Java) قسمت 4 : شی گرایی قسمت سه رایگان
5 آموزش جاوا (Java) قسمت 5 : انواع داده رایگان
6 آموزش جاوا (Java) قسمت 6 : انواع متغیر رایگان
7 آموزش جاوا (Java) قسمت 7 : Modifier ها رایگان
8 آموزش جاوا (Java) قسمت 8 : عملگرها قسمت یک رایگان
9 آموزش جاوا (Java) قسمت 9 : عملگرها قسمت دو رایگان
10 آموزش جاوا (Java) قسمت 10 : حلقه های تکرار رایگان
11 آموزش جاوا (Java) قسمت 11 : عبارات شرطی رایگان
12 آموزش جاوا (Java) قسمت 12 : کلاس Wrapper اعداد رایگان
13 آموزش جاوا (Java) قسمت 12 : کلاس Wrapper اعداد رایگان
14 آموزش جاوا (Java) قسمت 14: کلاس Wrapper کاراکترها رایگان
15 آموزش جاوا (Java) قسمت 15 : کلاس String و کار با رشته قسمت یک رایگان
16 آموزش جاوا (Java) قسمت 16 : کلاس String و کار با رشته قسمت دو رایگان
17 آموزش جاوا (Java) قسمت 17 : کلاس String و کار با رشته قسمت سه رایگان
18 آموزش جاوا (Java) قسمت 18 : کلاس String و کار با رشته قسمت چهار رایگان
19 آموزش جاوا (Java) قسمت 19 : StringBuilder و StringBuffer رایگان
20 آموزش جاوا (Java) قسمت 20 : استفاده از آرایه ها رایگان
21 آموزش جاوا (Java) قسمت 21 : آموزش کار با تاریخ رایگان
22 آموزش جاوا (Java) قسمت 22 : عبارات منظم (Regular Expression) رایگان
23 آموزش جاوا (Java) قسمت 23 : تعریف و استفاده از متدها قسمت یک رایگان
24 آموزش جاوا (Java) قسمت 24 : تعریف و استفاده از متدها قسمت دو رایگان
25 آموزش جاوا (Java) قسمت 25 : کار با استریم ها و فایل ها رایگان
26 آموزش جاوا (Java) قسمت 26 : کار با دایرکتوری ها رایگان
27 آموزش جاوا (Java) قسمت 27 : کلاس ByteArrayInputStream رایگان
28 آموزش جاوا (Java) قسمت 28 : معرفی کلاس File و متدها رایگان
29 آموزش جاوا (Java) قسمت 29 : معرفی و شرح Exception ها قسمت 1 رایگان
30 آموزش جاوا (Java) قسمت 30 : معرفی و شرح Exception ها قسمت 2 رایگان
31 آموزش جاوا (Java) قسمت 31 : معرفی و شرح Exception ها قسمت 3 رایگان
32 آموزش جاوا (Java) قسمت 32 : استفاده از انوع کلاس های داخلی رایگان
33 آموزش جاوا (Java) قسمت 33 : وراثت کلاس ها و انواع آن رایگان
34 آموزش جاوا (Java) قسمت 34 : Override کردن متد ها رایگان
35 آموزش جاوا (Java) قسمت 35 : چند ریختی (Polymorphism) رایگان
36 آموزش جاوا (Java) قسمت 36 : Enum و ویژگی های آن رایگان
37 آموزش جاوا (Java) قسمت 37 : معرفی Abstract رایگان
38 آموزش جاوا (Java) قسمت 38 : استفاده از کپسول بندی (Encapsulation) رایگان
39 آموزش جاوا (Java) قسمت 39 : استفاده از اینترفیس ها رایگان
40 آموزش جاوا (Java) قسمت 40 : پکیج(Package) و نحوه استفاده رایگان
41 آموزش جاوا (Java) قسمت 41 : معرفی داده ساختارها Enumeration رایگان
42 آموزش جاوا (Java) قسمت 42 : داده ساختار BitSet رایگان
43 آموزش جاوا (Java) قسمت 43 : داده ساختار Vector رایگان
44 آموزش جاوا (Java) قسمت 44 : داده ساختار Stack (پشته) رایگان
45 آموزش جاوا (Java) قسمت 45 : داده ساختار Dictionary رایگان
46 آموزش جاوا (Java) قسمت 46 : داده ساختار Hashtable رایگان
47 آموزش جاوا (Java) قسمت 47 : داده ساختار Properites رایگان
48 آموزش جاوا (Java) قسمت 48 : معرفی و آموزش جنریک (Generic) رایگان
49 آموزش جاوا (Java) قسمت 49 : برنامه نویسی سوکت و شبکه قسمت 1 رایگان
50 آموزش جاوا (Java) قسمت 50 : برنامه نویسی سوکت و شبکه قسمت 2 رایگان
51 آموزش جاوا (Java) قسمت 51 : استفاده از Lambda Expression رایگان
52 آموزش جاوا (Java) قسمت 52 : Thread و Multi-Threading رایگان
53 آموزش جاوا (Java) قسمت 53 : Runnable در Thread و Multi-Threading رایگان
54 آموزش جاوا (Java) قسمت 54 : کلاس Thread و متدها رایگان
زمان و قیمت کل 0″ 0
1 نظر

این نظر توسط مهدی عادلی در تاریخ پنجشنبه, 9 اردیبهشت 1395 حذف شده است.

دلیل: مطلب فاقد بعد فنی بوده و جنبه تبلیغاتی دارد

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....