суббота, 1 августа 2020 г.

Прибавление 2-х чисел при помощи Аннотаций (Annotation)

import cf.tilgiz.annotation_test.handler.MathHandler;

import java.lang.reflect.Method;


public class Dispatcher {
public static void main(String[] args) throws NoSuchMethodException {
MathHandler mathHandler = new MathHandler();

Class<MathHandler> cl = MathHandler.class;
Method method = cl.getDeclaredMethod("addTwoNumbers", int.class, int.class);
MathAnno mathAnno = method.getAnnotation(MathAnno.class);

mathHandler.addTwoNumbers(mathAnno.num1(),mathAnno.num2());
}
}
package cf.tilgiz.annotation_test.handler;

import cf.tilgiz.annotation_test.annotation.MathAnno;

public class MathHandler {
@MathAnno(num1 = 10, num2 = 20)
public void addTwoNumbers(int num1, int num2) {
System.out.println(num1 + num2);
}
}
package cf.tilgiz.annotation_test.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MathAnno {
int num1() default 0;
int num2() default 0;

}

суббота, 18 апреля 2020 г.

Пул потоков Thread pool

import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;
public class pool {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(3);        for (int i = 0; i < 5; i++) {
            executorService.submit(new work(i));        }
        executorService.shutdown();        try {
            executorService.awaitTermination(1, TimeUnit.DAYS);        } catch (InterruptedException e) {
            e.printStackTrace();        }
    }
}
class work implements Runnable{
    private int id;    public work(int id) {
        this.id = id;    }
    @Override    public void run() {
        try {
            Thread.sleep(5000);        } catch (InterruptedException e) {
            e.printStackTrace();        }
        System.out.println("Work with id = " + id + " finished.");    }
}

среда, 30 октября 2019 г.

Честная очередь FIFO Queue

В данном примере цифры будут выводиться по правилу FIFO
Queue q1 = new LinkedList<>();
q1.offer(4);
q1.offer(5);
q1.offer(23);
q1.offer(1);

System.out.println(q1);
System.out.println(q1.poll());
System.out.println(q1.poll());
System.out.println(q1.poll());

В этом примере poll будет выводить цифры отсортированными по возрастанию...
Queue q = new PriorityQueue<>();
q.offer(4);
q.offer(5);
q.offer(23);
q.offer(1);

System.out.println(q);
System.out.println(q.poll());
System.out.println(q.poll());
System.out.println(q.poll());

Queue очередь

A PriorityQueue - это то, что называется бинарной кучей. Он упорядочен/отсортирован только в том смысле, что первый элемент является наименьшим. Другими словами, он заботится только о том, что находится в передней части очереди, остальные "заказываются", когда это необходимо.

Элементы упорядочиваются только по мере их удаления, т.е. удаляются из очереди с помощью poll(). Именно по этой причине PriorityQueue удается получить такую ​​хорошую производительность, поскольку она не делает больше сортировки, чем нужно в любое время.

Вычисление среднего значения >>>1

int low = 0;
int high = 75;
int mid = (low + high) / 2;
int mid1 = (low + high) >>> 1;

Для второго вычисления работает при условии
|low| <= |high|

т.е. в случае
int low = -77;
int high = 75;
int mid1 вернет неверный результат.

Convert int[] to Integer[]

Convert int[] to Integer[]:

int[] primitiveArray = {1, 2, 3, 4, 5};
Integer[] objectArray = new Integer[primitiveArray.length];

for(int ctr = 0; ctr < primitiveArray.length; ctr++) {
objectArray[ctr] = Integer.valueOf(primitiveArray[ctr]); // returns Integer value
}


Convert Integer[] to int[]:

Integer[] objectArray = {1, 2, 3, 4, 5};
int[] primitiveArray = new int[objectArray.length];

for(int ctr = 0; ctr < objectArray.length; ctr++) {
primitiveArray[ctr] = objectArray[ctr].intValue(); // returns int value
}


В Java 8 мы можем сделать это

int[] ints = {1,2,3};
List list = Arrays.stream(ints).boxed().collect(Collectors.toList());

Сортировка массива(Array) и списка(List)

Integer[] arr2 = {66,3,24,6,9};
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));

ArrayList colors = new ArrayList<>();
colors.add("red");
colors.add("yellow");
colors.add("black");
colors.add("blue");
colors.add("green");
Collections.sort(colors);
System.out.println(colors);