My Study Note (Java)

Ref. site

Method reference

-https://www.sejuku.net/blog/22337 image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

■■■ Replaced functional interface implementation with lambda expression

A functional interface is an interface that has only one abstract method.

■ Description in anonymous class(Conventional example)
//interface
interface InterfaceTest{
    //Abstract method
    public String method(String name, int n);
}
 
public class Main {
    public static void main(String[] args) {
        //For anonymous classes
        InterfaceTest it = new InterfaceTest() {
            //override
            public String method(String name, int n) {
                return "Hello " + name + n + "!";
            }
        };
        System.out.println(it.method("Java", 8));
    }
}

Result
Hello Java8!


■ Description in lambda expression
//interface
interface InterfaceTest{
    //Abstract method
    public String method(String name, int n);
}
 
public class Main {
    public static void main(String[] args) {
        //For lambda expression
        InterfaceTest it = (name, n) -> {
            return "Hello " + name + n + "!";
        };
        System.out.println(it.method("Java", 8));
    }
}

Result
Hello Java8!

■String to LocalDateTime

String dateString = '20201112131415';
String dateString = '20201112';

LocalDateTime dateTime = (dateString.length() > 8)
    ? LocalDateTime.parse(dateString, DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))
    :     LocalDate.parse(dateString, DateTimeFormatter.ofPattern("yyyyMMdd")).atTime(LocalTime.MIN);

■LocalDateTime to String

LocalDateTime dateTime = LocalDateTime.of(2020, 11, 12, 13, 14, 15);
String dateString = dateTime.format("yyyy/MM/dd HH:mm:ss");

■LocalDateTime to LocalDate

LocalDateTime dateTime = LocalDateTime.of(2020, 1, 2, 3,4 ,5);
LocalDate date = date.toLocalDate();

■String

        System.out.println("--------------- ■replace ---------------");
        String str = "aaa-bbb-ccc";
        System.out.println(str.replace("-", "")); // aaabbbccc
        System.out.println(str); // aaa-bbb-ccc
    System.out.println("--------------- ■subString ---------------");
    String str = "123456789";
    System.out.println(str.substring(1, 5));// 2345
    System.out.println(str); // 123456789
        System.out.println("--------------- ■getLastChar ---------------");
        String str = "1234567890";
        System.out.println(str.substring(str.length() - 8));// [34567890]
        System.out.println(str); // [1234567890]
    System.out.println("--------------- ■stripLeading ---------------");
    String str = "  123456789  ";
    System.out.println(str.stripLeading() + "End");// [123456789  End]
    System.out.println(str); // [  123456789  ]

■enum

public class enumTest {

    public static void main(String[] args) {
        getKeyValue();
    }

    private static void getKeyValue() {
        String[] msgList = {"e0001", "e0002"};
        for (String id : msgList) {
            System.out.println(MessageEnum.valueOf(id)); // e0001
            System.out.println(MessageEnum.valueOf(id).getMessage()); //message
        }
    }

    enum MessageEnum {
        e0001("message"),
        e0002("Message 222");

        private final String message;

        public String getMessage(){
            return message;
        }
        MessageEnum(String message) {
            this.message = message;
        }
    }
}
//************************ Result
e0001
message
e0002
Message 222

■ LocalDate, LocalDateTime test results

private static void checkDisplay() {
    System.out.println("************************ checkDisplay ******************************");
    System.out.println(LocalDate.of(2020,1,1));
    System.out.println(LocalDate.of(2020,1,1)); // 2020-01-01
    System.out.println(LocalDateTime.of(2020,1,1,1,1,1).toString());//2020-01-01T01:01:01

    /*
    2020-01-01
    2020-01-01
    2020-01-01T01:01:01
     */
}
    public static LocalDate convert(String date, String formatter) {
        return LocalDate.parse(date, DateTimeFormatter.ofPattern(formatter));
    }

    public static LocalDateTime convertLocalDateTime(String date, String formatter) {
        if (date.length() <= 10) {
            LocalDate noTimestamp = convert(date, formatter.replaceAll(" ", "").split("HH", 0)[0]);
            return (noTimestamp != null) ?  noTimestamp.atTime(LocalTime.MIN) : null;
        }

        return LocalDateTime.parse(date, DateTimeFormatter.ofPattern(formatter));
    }
private static String stringToDateWithFormat(String value, String format) {

// Change to LocalDateTime type LocalDateTime dateValue = LocalDateTime.parse((value.length() > 8) ? value : value.concat("000000"), DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); return dateValue.format(DateTimeFormatter.ofPattern(format)); }

    private static void before() {
        System.out.println("************************ before ******************************");
        LocalDate date1 = LocalDate.of(2020,1,1);
        LocalDate date2 = LocalDate.of(2020,1,1);
        LocalDate date3 = LocalDate.of(2020,1,2);
        System.out.println(date1.isAfter(date2)); // false
        System.out.println(date1.isAfter(date3)); // false
        System.out.println(date3.isAfter(date2)); // true
    }
private static void stringToDate() {
    System.out.println("************************ stringToDate ******************************");
    System.out.println(stringToDateWithFormat("20200102", "yyyy/MM/dd HH:mm")); // 2020/01/02 00:00
    System.out.println(stringToDateWithFormat("20200102", "yyyy/MM/dd"));       // 2020/01/02
    System.out.println(stringToDateWithFormat("20200102", "MM/dd HH:mm"));      // 01/02 00:00
    System.out.println(stringToDateWithFormat("20200102", "HH:mm"));            // 00:00


    System.out.println(stringToDateWithFormat("20200102030405", "yyyy/MM/dd HH:mm")); // 2020/01/02 03:04
    System.out.println(stringToDateWithFormat("20200102030405", "yyyy/MM/dd"));       // 2020/01/02
    System.out.println(stringToDateWithFormat("20200102030405", "MM/dd HH:mm"));      // 01/02 03:04
    System.out.println(stringToDateWithFormat("20200102030405", "HH:mm"));            // 03:04


    // Error because of count > 14
    // System.out.println(stringToDateWithFormat("202001020303059999", "yyyy/MM/dd HH:mm"));
    // System.out.println(stringToDateWithFormat("202001020303059999", "yyyy/MM/dd"));
    // System.out.println(stringToDateWithFormat("202001020303059999", "MM/dd HH:mm"));
    // System.out.println(stringToDateWithFormat("202001020303059999", "HH:mm"));

    /*
    ************************ stringToDate ******************************
    2020/01/02 00:00
    2020/01/02
    01/02 00:00
    00:00

    2020/01/02 03:04
    2020/01/02
    01/02 03:04
    03:04

    Exception in thread "main" java.time.format.DateTimeParseException: Text '202001020303059999' could not be parsed at index 0
        at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
        at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
        at java.base/java.time.LocalDateTime.parse(LocalDateTime.java:492)
        at Date.Date.stringToDateWithFormat(Date.java:33)
        at Date.Date.stringToDate(Date.java:51)
        at Date.Date.main(Date.java:14)

     */
}
    private static void localDateTimeTolocalDate() {
        System.out.println("************************ localDateTimeTolocalDate ******************************");
        LocalDateTime date = LocalDateTime.of(2020, 1, 2, 3,4 ,5);
        System.out.println("LocalDateTime =" + date);                                // LocalDateTime =2020-01-02T03:04:05
        System.out.println("LocalDateTime -> LocalDate =" + date.toLocalDate());     // LocalDateTime -> LocalDate =2020-01-02
    }
private static void localDateToString() {
    System.out.println("************************ localDateToString ******************************");
    LocalDate date = LocalDate.of(2020, 1, 2);
    System.out.println("LocalDate =" + date);
    System.out.println("LocalDate -> String =" + date.toString());
    System.out.println("LocalDate -> String(Without -) =" + date.toString().replace("-", ""));
    /*
        ************************ localDateToString ******************************
        LocalDate =2020-01-02
        LocalDate -> String =2020-01-02
        LocalDate -> String(Without -) =20200102
     */

}
    private static void localDatePlusDay() {
        System.out.println("************************ localDatePlusDay ******************************");
        Short plusValue = 2;
        LocalDate date = LocalDate.of(2020, 1, 2);
        System.out.println("LocalDate =" + date);
        System.out.println("LocalDate -> String =" + date.toString());
        System.out.println("LocalDate -> String(Without -) =" + date.toString().replace("-", ""));
        System.out.println("LocalDate(plusDays:" + plusValue + ") =" + date.plusDays(plusValue));
        /*
            ************************ localDatePlusDay ******************************
            LocalDate =2020-01-02
            LocalDate -> String =2020-01-02
            LocalDate -> String(Without -) =20200102
            LocalDate(plusDays:2) =2020-01-04
         */

    }
private static String localDateTimeToString(LocalDateTime paramDate, String paramFormat) {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(paramFormat);
    return paramDate.format(formatter);
}

private static String localDateToStringWithFormat(LocalDate paramDate, String paramFormat) {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(paramFormat);
    return paramFormat.contains("HH:mm") ? paramDate.atTime(LocalTime.MIN).format(formatter) : paramDate.format(formatter);
}

private static void test1() {
    System.out.println("************************ test1 ******************************");
    System.out.println("■String to Date:" + convertLocalDateTime("2020/10/11 11:22", "yyyy/MM/dd HH:mm")); // ■String to Date:2020-10-11T11:22
    System.out.println("■String to Date:" + convertLocalDateTime("2020/10/11 11:22", "yyyy/MM/dd HH:mm")); // ■String to Date:2020-10-11T11:22

    System.out.println("■LocalDateTime to String(yyyy/MM/dd):" + localDateTimeToString(LocalDateTime.now(), "yyyy/MM/dd"));                                                                        // ■LocalDateTime to String(yyyy/MM/dd):2020/06/09
    System.out.println("■LocalDateTime to String(yyyy/MM/dd HH:mm):" + localDateTimeToString(LocalDateTime.of(2020,12,12,0,1,2), "yyyy/MM/dd HH:mm"));  // ■LocalDateTime to String(yyyy/MM/dd HH:mm):2020/12/12 00:01
    System.out.println("■LocalDateTime to String(yyyy/MM/dd HH:mm):" + localDateTimeToString(LocalDateTime.of(2020,12,12,23,1,2), "yyyy/MM/dd HH:mm")); // ■LocalDateTime to String(yyyy/MM/dd HH:mm):2020/12/12 23:01
    System.out.println("■LocalDateTime to String(yyyy/MM/dd hh:mm):" + localDateTimeToString(LocalDateTime.of(2020,12,12,0,1,2), "yyyy/MM/dd hh:mm"));  // ■LocalDateTime to String(yyyy/MM/dd hh:mm):2020/12/12 12:01
    System.out.println("■LocalDateTime to String(yyyy/MM/dd hh:mm):" + localDateTimeToString(LocalDateTime.of(2020,12,12,1,1,2), "yyyy/MM/dd hh:mm"));  // ■LocalDateTime to String(yyyy/MM/dd hh:mm):2020/12/12 01:01
    System.out.println("■LocalDateTime to String(yyyy/MM/dd hh:mm):" + localDateTimeToString(LocalDateTime.of(2020,12,12,14,1,2), "yyyy/MM/dd hh:mm")); // ■LocalDateTime to String(yyyy/MM/dd hh:mm):2020/12/12 02:01
    System.out.println("■LocalDateTime to String(yyyy/MM/dd hh:mm):" + localDateTimeToString(LocalDateTime.now(), "yyyy/MM/dd hh:mm"));     // ■LocalDateTime to String(yyyy/MM/dd hh:mm):2020/06/09 05:53
    System.out.println("■LocalDateTime to String(yyyy/MM/dd HH24:mm):" + localDateTimeToString(LocalDateTime.now(), "yyyy/MM/dd HH24:mm")); // ■LocalDateTime to String(yyyy/MM/dd HH24:mm):2020/06/09 1724:53
    System.out.println("■LocalDateTime to String(MM/dd):" + localDateTimeToString(LocalDateTime.now(), "MM/dd"));                           // ■LocalDateTime to String(MM/dd):06/09

    System.out.println("■LocalDate to String(yyyy/MM/dd):" + localDateToStringWithFormat(LocalDate.now(), "yyyy/MM/dd"));             // ■LocalDate to String(yyyy/MM/dd):2020/06/09
    System.out.println("■LocalDate to String(MM/dd):" + localDateToStringWithFormat(LocalDate.now(), "MM/dd"));                       // ■LocalDate to String(MM/dd):06/09
    System.out.println("■LocalDate to String(yyyy/MM/dd HH:mm):" + localDateToStringWithFormat(LocalDate.now(), "yyyy/MM/dd HH:mm")); // ■LocalDate to String(yyyy/MM/dd HH:mm):2020/06/09 00:00
    System.out.println("■LocalDate to String(MM/dd HH:mm):" + localDateToStringWithFormat(LocalDate.now(), "MM/dd HH:mm"));           // ■LocalDate to String(MM/dd HH:mm):06/09 00:00

    /* Result:
   ■String to Date:2020-10-11T11:22
   ■LocalDateTime to String(yyyy/MM/dd):2020/03/31
   ■LocalDateTime to String(yyyy/MM/dd HH:mm):2020/12/12 00:01
   ■LocalDateTime to String(yyyy/MM/dd HH:mm):2020/12/12 23:01
   ■LocalDateTime to String(yyyy/MM/dd hh:mm):2020/12/12 12:01
   ■LocalDateTime to String(yyyy/MM/dd hh:mm):2020/12/12 01:01
   ■LocalDateTime to String(yyyy/MM/dd hh:mm):2020/12/12 02:01
   ■LocalDateTime to String(yyyy/MM/dd hh:mm):2020/03/31 03:50
   ■LocalDateTime to String(yyyy/MM/dd HH24:mm):2020/03/31 1524:50
   ■LocalDateTime to String(MM/dd):03/31
   ■LocalDate to String(yyyy/MM/dd):2020/03/31
   ■LocalDate to String(MM/dd):03/31
   ■LocalDate to String(yyyy/MM/dd HH:mm):2020/03/31 00:00
   ■LocalDate to String(MM/dd HH:mm):03/31 00:00
     */
}
■ Time-out test

public class TimeUnit {


    public static void main(String[] args) throws InterruptedException {
        timeUnit();
        calculateTime();
    }

    private static void calculateTime() throws InterruptedException {
        Integer period = 10;
        long now;
        long start = System.currentTimeMillis();

        for (int i = 1; i <= 2; i++) {

            now = System.currentTimeMillis();
            if (now - start > period) {
                System.out.println("Timed out");
                break;
            }

            executeProcess();
        }
    }

    private static void executeProcess() throws InterruptedException {
        System.out.println("****************** Execution Start ******************");
        java.util.concurrent.TimeUnit.MILLISECONDS.sleep(100);
        System.out.println("****************** Execution End");
    }

    private static void timeUnit() throws InterruptedException {
        System.out.println(java.util.concurrent.TimeUnit.MILLISECONDS + ", value=" + System.currentTimeMillis());
        java.util.concurrent.TimeUnit.MILLISECONDS.sleep(10000);
        System.out.println(java.util.concurrent.TimeUnit.MILLISECONDS + ", value=" + System.currentTimeMillis());
        System.out.println(java.util.concurrent.TimeUnit.MICROSECONDS);
        System.out.println(java.util.concurrent.TimeUnit.NANOSECONDS);
        System.out.println(java.util.concurrent.TimeUnit.DAYS);
        System.out.println(java.util.concurrent.TimeUnit.HOURS);
        System.out.println(java.util.concurrent.TimeUnit.MINUTES);
        System.out.println(java.util.concurrent.TimeUnit.SECONDS);
    }
}
//*********************************** Result ******************************* //
MILLISECONDS, value=1599635237478
MILLISECONDS, value=1599635247541
MICROSECONDS
NANOSECONDS
DAYS
HOURS
MINUTES
SECONDS
****************** Execution Start ******************
****************** Execution End
Timed out

■Map Search

    private static Map<String, String> MAP = Map.of(
        "001", "01",
        "002", "02",
        "003", "03");

    public static void main(String[] args) {
        search("001"); // 01
        search("002"); // 02
        search("003"); // 03
        search("006"); // null
    }
    private static void search(String value) {
         System.out.println(MAP.get(value));
    }

■Static, Inner Class {}

public class StaticTest {

    static {
        System.out.println("Static.....");
    }

    public static void main(String[] args) {
        staticTest();
        innerTest();
    }

    private static void staticTest() {
        System.out.println("staticTest Method");
    }
    private static void innerTest() {
        innerClassT obj = new innerClassT();
        System.out.println(obj.getTest());
    }

    static class innerClassT {

        {
            test = "{} setting";
            System.out.println("innerClassT Static.....");
        }

        private String test;
        public String getTest() {
            return test;
        }
    }
}

********************* Result:
Static.....
staticTest Method
innerClassT Static.....
{} setting

stream (Object)


import static java.util.Objects.nonNull;
import java.util.ArrayList;
import java.util.List;
public class Stream {

    public static void main(String[] args) {
        MyObject obj1 = new MyObject();
        obj1.str = "1st";
        obj1.intVal = 100;
        MyObject obj2 = new MyObject();
        obj2.str = "2nd";
        obj2.intVal = 200;
        List<MyObject> lst = new ArrayList<MyObject>();
        lst.add(obj1);
        lst.add(obj2);

        streamIsExists(lst);
    }
    private static void streamIsExists(List<MyObject> lst) {
        System.out.println("'xxx' exist in lst list : Result = " + isExist(lst, "xxx"));
        System.out.println("'1st' exist in lst list : Result = " + isExist(lst, "1st"));
        System.out.println("'1st' exist in lst list : Result = " + isExist(lst, "GG"));
    }

    private static boolean isExist(List<MyObject> lst, String searchVal) {
       return lst.stream()
            .filter(MyObject -> nonNull(MyObject.str))
            .filter(MyObject -> searchVal.equals(MyObject.str))
            .findFirst()
            .isPresent();
    }
}

class MyObject {
    String str;
    int intVal;
}

/* ********************* Result
'xxx' exist in lst list : Result = false
'1st' exist in lst list : Result = true
'1st' exist in lst list : Result = false
*/

stream (Object Filter)

import static java.util.Objects.isNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;

public class Stream_ObjFilter {

    public static void main(String[] args) {
        filter();
    }

    private static void filter() {
        System.out.println("'1st' exist in lst list : Result = " + getInnerClassValObj(getList("1st")).isPresent());
        System.out.println("'1st' exist in lst list : Result = " + getInnerClassValObj(getList("2nd")).isPresent());
    }
    private static List<MyObject3> getList(String strVal) {
        MyObject3 obj1 = new MyObject3();
        obj1.intVal = 100;
        MyObject3 obj2 = new MyObject3();
        obj2.classVar = new InnerClass();
        obj2.classVar.str = strVal;
        obj2.intVal = 100;
        List<MyObject3> lst = new ArrayList<MyObject3>();
        lst.add(obj1);
        lst.add(obj2);
        return lst;
    }

    private static Optional<InnerClass> getInnerClassValObj(List<MyObject3> lst) {
        return lst.stream()
            .filter(InnerClass::hasValue)
            .map(MyObject3::getInnerClass)
            .filter(Objects::nonNull)
            .filter(InnerClass::isFirst)
            .findAny();
    }
}
class MyObject3 {
    InnerClass classVar;
    int intVal;
    public InnerClass getInnerClass() {
        return this.classVar;
    }
}
class InnerClass {
    String str;

    public static boolean hasValue(MyObject3 myObject3) {
        return !isNull(myObject3.toString());
    }

    public boolean isFirst() {
        return "1st".equals(this.str);
    }
}
/* ********************* Result
'1st' exist in lst list : Result = true
'1st' exist in lst list : Result = false
*/

instanceof

    private static boolean isEmpty(Object obj) {
        if (obj == null) {
            return true;
        }

        if (obj instanceof CharSequence) {
            return ((CharSequence) obj).length() == 0;
        }
        if (obj.getClass().isArray()) {
            return Array.getLength(obj) == 0;
        }
        if (obj instanceof Collection) {
            return ((Collection) obj).isEmpty();
        }
        if (obj instanceof Map) {
            return ((Map) obj).isEmpty();
        }

        // else
        return false;
    }

Recommended Posts

My Study Note (Java)
Study Java with Progate Note 1
My note: Introducing Java to Ubuntu
Let's study Java
My DOM (Java)
[Java] Study notes
Java 8 study (repeatable)
My StAX (Java)
Java study memorandum
My Java reference
Study Java Silver 1
Java abstract modifier [Note]
[Java] Internal Iterator Note
My DAO pattern (Java)
Java Silver Study Day 1
[Java ~ Method ~] Study memo (5)
Java JUnit brief note
[java] Java SE 8 Silver Note
[Note] Java: String search
Java study # 1 (typical type)
[Note] Java: String survey
java: Add date [Note]
Study Java # 2 (\ mark and operator)
A note about Java GC
Study java arrays, lists, maps
(Note) Java classes / variables / methods
Java Silver Study Method Memo
[Java ~ Boolean value ~] Study memo (2)
Java study # 7 (branch syntax type)
Java study memo 2 with Progate
[Java] [Spring] Spring Boot 1.4-> 1.2 Downgrade Note
How to study Java Silver SE 8
[Java] Points to note with Arrays.asList ()
Note
Note 1: Elementary, stumbling blocks (java, javascript)
Java
[Note] Handling of Java decimal point
Java study # 4 (conditional branching / if statement)
Orcacla Java Bronze SE 7/8 Qualification Study
Java
Java study # 5 (iteration and infinite loop)
Study Deep Learning from scratch in Java.
My thoughts on the equals method (Java)
Summary of in-house newcomer study session [Java]
[Java ~ Variable definition, type conversion ~] Study memo
Pass parameters when debugging vscode java. [Note]
[Beginner] Java method / class / external library [Note 23]
Study Java Try using Scanner or Map
Java SE 8 Silver (Java SE 8 Programmer I) Pass Note
Basic knowledge of Java development Note writing
"I'm sure it's good to study Java"
Note: next ・ nextLine (paiza learning Java introduction 9: # 06)
[Note] Cooperation between Java and DB (basic)
How to use Java Scanner class (Note)
[Java ~ Conditional branching / Iterative processing ~] Study memo (3)
[Java ~ Classes and External Libraries ~] Study Memo (6)