ساختمان داده ها در جاوا Bitset ها یا مجموعه بیتی

بنام خدا :

در ادامه مبحث ساختمان داده ها در جاوا از سری مباحث جاوای پیشرفته امروز میخواییم در مورد BitSet ها یا مجموعه های بیتی صحبت کنیم .

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


BitSet bitset=new BitSet();

یا


BitSet bitset=new BitSet(تعداد بیتهای اعضا);

 

مثال زیر رو  اجرا کنید و نتیجه رو ببینید :


package javaapplication1;

import java.util.BitSet;
import java.util.Scanner;


public class JavaApplication1 {



public static void main(String[] args) {
    // TODO code application logic here

    //تعریف تو مجموعه بیتی به طول 10 عضو 
    BitSet bitset1=new BitSet(10);
    BitSet bitset2=new BitSet(10);

    //مقدار دهی مجموعه بیتی
    for(int i=0;i<=10;i++)
    {
        //مقادیر زوج 
        if(i%2==0) bitset1.set(i);
         //مقادیر فرد
        if(i%2!=0) bitset2.set(i);
    }

    System.out.println("To And:1 To And Not:2 OR:3 Enter Your Choice :");
    Scanner in = new Scanner(System.in);
    int num = in.nextInt();

    //چاپ مجموعه بیتی اول
    System.out.println("مجموعه اول :" + bitset1);
    //چاپ مجموعه بیتی دوم
    System.out.println("مجموعه اول :" + bitset2);



    switch(num)
    {
        case 1 : 
            //مقایسه 
اعضای دو مجوعه و برگرداندن مجموعه ای که شامل مقادیر مشترک است
            
bitset2.and(bitset1);
            
System.out.println("AND Result : " + bitset2);
        break;

        case 2 :
            //مقایسه دو 
مجموعه و چاپ مقادیری از مجمو عه دوم که در اولی نیست
            
bitset2.andNot(bitset1);
            
System.out.println("AND Not Result : " +bitset2);
        break;

        case 3:
            //مقایسه دو 
مجموعه و چاپ مقادیری که یا در اولیست یا در دومی
            
bitset2.or(bitset1);
            
System.out.println("OR Result : " +bitset2);
        break;

    }    





 }

}

توی مثال بالا ما دو تا مجموعه بیتی با اعضای 10  بیتی تعریف کردیم بعد از کاربر عددی رو به عنوان انخاب نوع عملیات روی  اعضای مجموعه ها گرفتیم در صورتی که عدد 1 وارد بشه عمل and انجام میشه یعنی دنبال اعضای مشترک دومجموعه میگرده اگر بود چاپ میکنه و در صورتی که 2 رو وارد کنه  And Not اجرا میشه که در این حالت مجموعه ای از bitset2 رو میده که توی bitset1 نیست . یعنی همون تفاضل دو مجموعه و در صورتی که  3 رو وارد کنه مجموعه ای رو برمیگردونه که اعضاش  یا توی bitset1 هستن یا biset2 .

اعمال زیادی میشه روی BitSet ها انجام داد که در زیر بعضیاشو آوردم :


 //تعیین اینکه آیا عضو 5 در مجموعه هست یا نه 
boolean b=bitset2.get(5);

//حذف عضو 4 از مجموعه بیتی
bitset2.flip(4);

//اختصاص اعداد 8 تا 10 به مجموعه بیتی
bitset2.set(8,10);

//از اول دو تا عضو رو پاک میکنه
bitset2.clear(0, 2);

برای یادگیری کامل متدهای کار بر روی bitset ها میتونید از سایت tutorialspoint که مرجع اصلی بنده هم هست استفاده کنید .

تا جلسه بعد در پناه حق....


فایلهای ضمیمه
توجه! هیچ فایل ضمیمه ای برای این مطلب یافت نشد

نظرات شما نظر جدید