Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
1. Курс по Java, 2016
Логи, фасады, библиотеки
и коллекции
slf4j, maven repo, collections framework
annie.tarasenko@7bits.it, denis.nelubin@7bits.it
2. Курс по Java, 2016
Журналы
System.out.println("Hello");
System.err.println("World");
new Exception("stack").printStackTrace();
Hello
World
java.lang.Exception: stack
at it.sevenbits.example.logs.OutPrint.main(OutPrint.java:
8)
Не надо
так!
3. Курс по Java, 2016
SLF4J
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
http://www.slf4j.org/
4. Курс по Java, 2016
SLF4J (Simple Logging Facade for Java)
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SLF4JLogSample {
final static Logger logger =
LoggerFactory.getLogger(SLF4JLogSample.class);
public static void main(String[] args) {
logger.info("Hello");
logger.warn("World");
logger.error("error", new Exception("exception"));
}
}
5. Курс по Java, 2016
SLF4J
SLF4J: Failed to load class "org.slf4j.impl.
StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger
implementation
SLF4J: See http://www.slf4j.org/codes.
html#StaticLoggerBinder for further details.
18. Курс по Java, 2016
Collection Framework
Набор коллекций в java.util
С Java 1.2
Generic с Java 1.5
19. Курс по Java, 2016
java.util.List
List<String> listOfStrings;
listOfStrings.add("abc"); // добавление элемента
listOfStrings.size(); // размер коллекции
listOfStrings.contains("abc"); // проверка наличия элемента
listOfStrings.get(0); // получение элемента
for (String item : listOfStrings) {
// цикл по элементам
}
20. Курс по Java, 2016
Реализации List
List<String> arrayList = new ArrayList<String>();
List<String> linkedList = new LinkedList<String>();
21. Курс по Java, 2016
java.util.Map
Map<Integer, String> map;
map.put(5, "five"); // добавить значение по ключу
map.size(); // получить количество значений
map.containsKey(5); // проверить наличие ключа
map.containsValue("five"); // проверить наличие значения
map.get(5); // получить значение по ключу
for (Map.Entry<Integer, String> entry : map.entrySet()) {
// цикл по ключам и значениям
entry.getKey(); // ключ
entry.getValue(); // значение
}
22. Курс по Java, 2016
Реализации Map
Map<Integer, String> hashMap =
new HashMap<Integer, String>();
Map<Integer, String> treeMap =
new TreeMap<Integer, String>();
25. Курс по Java, 2016
hashCode() и equals()
public class Entry {
public Integer key;
public String value;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Entry entry = (Entry) o;
if (key != null ? !key.equals(entry.key) : entry.key != null) return false;
return value != null ? value.equals(entry.value) : entry.value == null;
}
@Override
public int hashCode() {
int result = key != null ? key.hashCode() : 0;
result = 31 * result + (value != null ? value.hashCode() : 0);
return result;
}
}
26. Курс по Java, 2016
Домашнее задание
В Formatter:
● Устранить замечания по коду касательно исключений, пакетов,
интерфейсов
● Использовать Logger (SLF4J) везде, где нельзя применить unit-тесты
Если хотите получать индивидуальный отзыв на работу, нужно сдать
задание до 22:00 четверга, 28 апреля 2016 года.
Следующие занятия переносятся на 5 и 12 мая!
Почитать: https://habrahabr.ru/post/113145/