doc['extra.records_count'].value
int
). Поля value
у массива нет. Одинарными кавычками обозначают char
(одиночный символ).doc
- это HashMap
, а extra.records_count
- переменная типа long
, то доставать значение надо так:// вместо String подставь тот тип, в котором хранятся value в мапе
String value = doc.get(extra.records_count);
rec_count
, а recCount
. абстрактный класс реализует базовый функционал, а классу наследнику передается лишь определенная часть функционала?
Animal{}
может и не уметь "говорить", поэтому метод void say(){}
ему задавать не надо. И Fish extends Animal{}
не будет иметь этого метода, а Dog extends Animal{}
будет.void move();
, а потомки будут обязаны его реализовать: птичка будет летать, рыбка плавать, а собачка бегать. model
это экземпляр товара. Тогда все товары хранятся в какой-то коллекции, например, List<Model> list = ..............
int total = list.stream()
.mapToInt(model -> Integer.parseInt(model.getPrice())*Integer.parseInt(model.getTovarValue()))
.sum();
@GetMapping("/list")
List<AuditAssetItem> getChangesByCriteria(
@RequestParam int assetid,
@RequestParam String from,
@RequestParam String to,
@RequestParam boolean item,
@RequestParam boolean rights,
@RequestParam boolean extended
) {
return service.getAuditListByCriteria(assetid, from, to, item, rights, extended);
}
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--https://docs.spring.io/spring-boot/docs/2.7.6/reference/html/features.html#features.logging-->
<!--https://docs.spring.io/spring-boot/docs/2.7.6/reference/html/howto.html#howto.logging-->
<!--https://www.baeldung.com/spring-boot-logging-->
<!--https://github.com/spring-projects/spring-boot/blob/v2.7.6/spring-boot-project/spring-boot/src/main/resources/org/springframework/boot/logging/logback/-->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<property name="LOG" value="log-folder"/>
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d{yyyy-MM-dd HH:mm:ss} %p %logger : %m%n</Pattern>
<charset>${FILE_LOG_CHARSET}</charset>
</encoder>
<file>${LOG}/my-log-file.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG}/archived/my-log-file-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
<maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize>
<totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap>
<maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-7}</maxHistory>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="CONSOLE"/>
</root>
<logger name="my-logger-name" level="info">
<appender-ref ref="ROLLING_FILE"/>
</logger>
</configuration>
static final Logger log = LoggerFactory.getLogger("my-logger-name");
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.ToString;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Person> listPeople = new ArrayList<>();
listPeople.add(new Person("Mari", "Ke ri", 22));
listPeople.add(new Person("Poti", "Ty Re Mi", 18));
listPeople.add(new Person("Pow", "Keri", 19));
System.out.println(listPeople);
// Можно так
listPeople.sort(new PersonComparator());
// А можно так
listPeople.sort((p1, p2) -> {
int len1 = p1.getSurname().split(" ").length;
int len2 = p2.getSurname().split(" ").length;
if (len1 != len2) {
return Integer.compare(len1, len2);
}
return Integer.compare(p1.getAge(), p2.getAge());
});
System.out.println(listPeople);
}
}
class PersonComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
int len1 = p1.getSurname().split(" ").length;
int len2 = p2.getSurname().split(" ").length;
if (len1 != len2) {
return Integer.compare(len1, len2);
}
return Integer.compare(p1.getAge(), p2.getAge());
}
}
@AllArgsConstructor
@Getter
@ToString
class Person {
private String name;
private String surname;
private int age;
}
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.ToString;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Person2> listPeople2 = new ArrayList<>();
listPeople2.add(new Person2("Mari", "Ke ri", 22));
listPeople2.add(new Person2("Poti", "Ty Re Mi", 18));
listPeople2.add(new Person2("Pow", "Keri", 19));
System.out.println(listPeople2);
// Так
listPeople2.sort((p1,p2)-> p1.compareTo(p2));
// То же самое
listPeople2.sort(Person2::compareTo);
System.out.println(listPeople2);
}
}
@AllArgsConstructor
@Getter
@ToString
class Person2 implements Comparable<Person2> {
private String name;
private String surname;
private int age;
@Override
public int compareTo(Person2 p) {
int len1 = this.surname.split(" ").length;
int len2 = p.getSurname().split(" ").length;
if (len1 != len2) {
return Integer.compare(len1, len2);
}
return Integer.compare(this.age, p.getAge());
}
}
как
import java.util.List;
import java.util.Random;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) {
// Create List
List<MyObj> objects = Stream.generate(MyObj::new).limit(10).toList();
System.out.println(objects);
// Get minimal index item
MyObj minIndexObj = objects
.stream()
.reduce((a, b) -> a.getIndex() < b.getIndex() ? a : b).orElse(null);
System.out.println(minIndexObj);
}
}
class MyObj {
private final int index;
public MyObj() {
index = new Random().nextInt();
}
public int getIndex() {
return index;
}
@Override
public String toString() {
return "MyObj { index= " + index + " }";
}
}