Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

класс BitSet – позволяет работать с битами




класс BitSet – позволяет работать с битами

BitSet a=new BitSet();

BitSet b=new BitSet();

a. set(0); a. set(1); a. set(2); // номер бита который переключаю в true

b. set(0); b. set(1); b. set(8); b. set(9);

putBits(a, 12);                //111000000000

putBits(b, 12);                     //110000001100

  

a. or(b);    putBits(a, 12);           //111000001100

}

static void putBits(BitSet bits, int len) {

for(int i=0; i< len; i++)

    System. out. print( (bits. get(i))? 1: 0);

System. out. println();

}

Класс BitSet предназначен для работы с последовательностями битов. Каждый компонент этой коллекции может принимать булево значение, которое обозначает, установлен бит или нет. Содержимое BitSet может быть модифицировано содержимым другого BitSet с использованием операций AND, OR или XOR (исключающее или).

BitSet имеет текущий размер (количество установленных битов), может динамически изменяться. По умолчанию все биты в наборе устанавливаются в 0 (false). Установка и очистка битов в BitSet осуществляется методами set(int index) и clear(int index).

Метод int length() возвращает " логический" размер набора битов, int size() возвращает количество памяти, занимаемой битовой последовательностью BitSet.

 

 

 

  package app21. pkg1;   import java. io. *; //одна биб-ка ввода-вывода import java. nio. charset. Charset; import java. nio. file. Files; import java. nio. file. Path; import java. nio. file. Paths; import java. util. Date; import java. util. Random; public class App211 implements Serializable { private static Random r;    r = new Random(88);    for(int i=0; i< 9; i++) { System. out. print(r. nextInt() + " " ); }        }   }

Класс Random используется для получения последовательности псевдослучайных чисел. В качестве " зерна" применяется 48-битовое число. Если для инициализации Random задействовать одно и то же число, будет получена та же самая последовательность псевдослучайных чисел.

В классе Random определено также несколько методов, которые возвращают псевдослучайные величины для примитивных типов Java.

Дополнительно следует отметить наличие двух методов: double nextGaussian() - возвращает случайное число в диапазоне от 0. 0 до 1. 0 распределенное по нормальному закону, и void nextBytes(byte[] arr) - заполняет массив arr случайными величинами типа byte.

 

 

Java Collections Framework (JCF)

 

 

 

 

 

 

В отличие от С++, generic-и в Java позволяют задать класс, от которого должен быть унаследован параметр generic-а, или интерфейс, который он должен реализовать. Это делается с помощью ключевого слова extends.

Extends можно применять и для параметров generic-классов:

class < T extends Glyph> GlyphsContainter {

... public void addGlyph(T glyph){... }

}

Как в методах, так и в классах можно задать более одного базового интерфейса, который должен реализовывать generic-параметр. Это делается при помощи следующего синтаксиса:

class < T extends Glyph & MoveableGlyph > MoveableGlyphsContainter { 

... public void addGlyph(T glyph){... }

}

Маски

Маски являются еще одним отличием Java generic-ов от шаблонов С++. Они используются тогда, когда нужно абстрагироваться от конкретных аргументов типа, и позволяют использовать его там, где не требуется знать конкретные типы параметров. Например, это может быть метод, который очищает список, или метод, которому не интересен тип ключа карты (Map), т. к. он оперирует только со значениями. Приведенные ниже примеры помогут более подробно разобраться, что такое маски и для чего они нужны.

Синтаксически маска – это выражение, состоящее из символа ‘? ’, и, возможно, ограничений, например, ‘? extends T’ или ‘? super T’, где T – тип.

Чаще маски применяются при описании типов параметров методов, но их также можно использовать просто в объявлении переменных в теле метода или членов класса.

  package app. pkg21. pkg2;   public class App212 {   //параметризованный метод public static< T extends Comparable> T max2(T a, T b){    T max = a;    if(a. compareTo(b)< 0) max = b;    return max; } public static void main(String[] args) {    // TODO code application logic here    System. out. println(max2(13, 8));    System. out. println(max2(" abx", " abh" )); }     }
run: abx СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)

 

  package app. pkg21. pkg2; class Box implements Comparable< Box> { int a, b;   public Box(int a, int b) {    this. a = a;    this. b = b; }   public String toString() {       return a+", " +b; } public int compareTo(Box box) {    return a*b - box. a*box. b; } } public class App212 {   //параметризованный метод public static< T extends Comparable> T max2(T a, T b){    T max = a;    if(a. compareTo(b)< 0) max = b;    return max; } public static void main(String[] args) {    // TODO code application logic here    System. out. println(max2(new Box(11, 3), new Box(3, 5)));    System. out. println(max2(13, 8));    System. out. println(max2(" abx", " abh" )); }     }
run: 11, 3 abx СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)

 

package app. pkg21. pkg2;   import java. util. ArrayList; import java. util. List;   class Box implements Comparable< Box> { int a, b;   public Box(int a, int b) {    this. a = a;    this. b = b; }   public String toString() {    return a+", " +b; } public int compareTo(Box box) {    return a*b - box. a*box. b; } } public class App212 {   //параметризованный метод public static< T extends Comparable> T max2(T a, T b){    T max = a;    if(a. compareTo(b)< 0) max = b;    return max; } public static void main(String[] args) {    // TODO code application logic here    System. out. println(max2(new Box(11, 3), new Box(3, 5)));    System. out. println(max2(13, 8));    System. out. println(max2(" abx", " abh" ));            List< Integer> list = new ArrayList< > ();    list. add(2);    //list. add(" sdf" ); //error        }   }
 

 

Итератор – паттерн поведения объектов, предоставляющий последовательный доступ ко всем элементам составного объекта, не раскрывая его внутреннего представления.
Известен также под именем Cursor (курсор).

 

  package app. pkg21. pkg2;   import java. util. ArrayList; import java. util. List;   class Box implements Comparable< Box> { int a, b;   public Box(int a, int b) {    this. a = a;    this. b = b; }   public String toString() {    return a+", " +b; } public int compareTo(Box box) {    return a*b - box. a*box. b; } } public class App212 {   //параметризованный метод public static< T extends Comparable> T max2(T a, T b){    T max = a;    if(a. compareTo(b)< 0) max = b;    return max; } public static void main(String[] args) {    // TODO code application logic here    System. out. println(max2(new Box(11, 3), new Box(3, 5)));    System. out. println(max2(13, 8));    System. out. println(max2(" abx", " abh" ));        List< Integer> list = new ArrayList< > ();    list. add(2);    //list. add(" sdf" ); //error    System. out. println(list. size());    //System. out. println(list. );         }     }
 

 

С

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...