private double [] vektor;
public Main() {
double [] vektor = {2, 3.5, -5};
}
public Main plus (Main vektor){
double [] a = {2, 3.5, -5};
double [] b = {2, 3.5, -5};
double [] r = new double [a.length+b.length];
System.arraycopy(a, 0, r, 0, a.length);
System.arraycopy(b, 0, r, a.length, b.length);
return r;
}
public Main plus (Main vektor)
public double[] plus (Main vektor)
public Main(double [] vektor) {
this.vektor = vektor;
}
LinkedList<Integer> sweets = new LinkedList<>();
StringBuilder sb = new StringBuilder();
AtomicBoolean hasMinAmount = new AtomicBoolean(false);
sweets.stream()
.collect(Collectors.toMap(Integer::intValue, integer -> 1, Math::addExact))
.forEach((candyName, amount) -> {
if (amount >= min) {
hasMinAmount.set(true);
}
for (int i = 0; i < amount; i++) {
sb.append(candyName + " ");
}
});
if (hasMinAmount.get()) {
System.out.print(sb);
} else {
System.out.println("Oh sh*t");
}
str1.intern() == str2.intern()
public static void main(String[] args) {
try(Requester requester = new Requester()) {
String name = requester.requestLine("Введите ваше имя");
String surName = requester.requestLine("Введите вашу фамилию");
System.out.println(String.format("Здравствуйте, %s %s!", name, surName));
String dish = requester.requestLine("Ваше любимое блюдо?");
System.out.println(String.format("О, %s! Мне это тоже нравится!", dish));
}
}
private static class Requester implements AutoCloseable {
private final Scanner scanner;
private Requester() {
this.scanner = new Scanner(System.in);
}
private String requestLine(String requestMessage) {
System.out.println(requestMessage);
return scanner.nextLine();
}
@Override
public void close() {
scanner.close();
}
}
public class Main {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Map<Class<? extends Car>, Handler> carHandlers = new HashMap<>();
carHandlers.put(Car.class, new CarHandler());
carHandlers.put(Ford.class, new FordHandler());
Car car = new Car();
Car ford = new Ford();
Object carTest = carHandlers.get(car.getClass()).handle(car);
Object fordTest = carHandlers.get(ford.getClass()).handle(ford);
System.out.println(carTest);
System.out.println(fordTest);
}
interface Handler<T extends Car> {
Object handle(T obj);
}
static class Car {
String test() {
return "I'm Car";
}
}
static class Ford extends Car {
String test() {
return "I'm Ford";
}
}
static class CarHandler implements Handler<Car> {
@Override
public Object handle(Car car) {
return car.test();
}
}
static class FordHandler implements Handler<Ford> {
@Override
public Object handle(Ford ford) {
return ford.test();
}
}
}
public static void main(String[] args) {
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
Thread.getAllStackTraces().keySet().stream()
//Не стоит останавливать поток в котором отрабатывает хук, а тем более пытаться заджойниться
.filter(thread -> !thread.equals(Thread.currentThread()))
//Демоны предполагают безопасное завершение в любой момент, останавливать их не нужно
.filter(thread -> !thread.isDaemon())
//Устанавливаем флаг "interrupt" для всех остальных
.peek(Thread::interrupt)
.peek(thread -> System.out.println(thread.getClass()))
.forEach(thread -> {
try {
thread.join(); //Ждем завершения всех потоков, которым установлен флаг "interrupt"
} catch (InterruptedException e) {
// ...
}
});
}));
while (true) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
System.out.println("Thread was interrupted once");
//После перехвата исключения флаг "interrupt" возвращается в исходное состояние, поэтому его нужно установить снова
Thread.currentThread().interrupt();
break;
}
}
while (true) {
try {
Thread.sleep(100); // Мы бы зависли здесь, если бы не установили флаг "interrupt" повторно
} catch (InterruptedException e) {
System.out.println("Thread was interrupted");
Thread.currentThread().interrupt();
break;
}
}
while (!Thread.currentThread().isInterrupted()) {
doSomeUninterruptableWork();
}
}