JAVA
-
[JAVA] Enum 활용JAVA 2022. 2. 25. 17:17
과제를 하는 도중 static final 변수를 쓰는 것과 enum을 저렇게 길게 쓰는것에 대해 의문점이 왔다. entity에 enum을 쓰게 되면 저 name이 그대로 db에 저장되는데 너무 저장공간을 많이 쓴다는 생각이 들었다. 하지만 분명 수업에서 김영한 선생님께서 enum타입은 string을 써야 오류가 없다라고 하셨기때문에 활용법에 대해서 감을 잘 못잡고 있었다. 그리고 static final 변수도 아 먼가 저렇게 너무 많으면 지저분하고 나중에 알아보기도 어려울걸 알면서도 다른방법을 잘 몰라 가만히 두고만 있었다. 결국 오늘 enum활용에 대해 많이 찾아봤고, 17~18년에 쓴 이동욱 선생님의 블로그 글들에서 해답을 찾았다. enum으로 직관적으로 계산하기 장르별 점수를 나눠야 하는 식이 필요..
-
[JAVA] ArrayList 정렬하기JAVA 2022. 1. 16. 21:04
java 8이후로 쉬운 list 정렬방법이 나왔다. 이제 컬렉션없이 Comparator을 이용하여 리스트에서 바로 list함수를 바로 꺼내쓸 수 있다. // 오름차순으로 정렬 list.sort(Comparator.naturalOrder()); // 내림차순으로 정렬 list.sort(Comparator.reverseOrder()); 이 밖에 객체나 특정 상황에서 비교군을 임의의로 정의해야할 때가 있다. 이때는 Comparator 인터페이스를 구현하여 사용해볼 수 있다. 인터페이스 구현 public static class ChampRateComparator implements Comparator { @Override public int compare(ForChampIdAndRate o1, ForChampI..
-
[Java] HashMap Value 기준으로 정렬하기JAVA 2022. 1. 13. 02:23
map에서 treemap은 key값으로만 정렬해주기 때문에 value를 정렬하려면 list를 이용해야한다. map의 entry set을 이용해 list화 한다. Map map = new HashMap(); map.put("a", 3); map.put("b", 2); map.put("c", 1); List entries = new ArrayList(map.entrySet()); 다음 entry의 sort함수와 comparator, tocompare를 사용해 간단하게 비교가 가능하다. entries.sort((v1, v2) -> v1.getValue().compareTo(v2.getValue())); Map result = new HashMap(); for (int i = 0; i < COUNT5_CHAMP..
-
[Java] Java 함수적 인터페이스 Consumer, SupplierJAVA 2021. 12. 17. 21:10
Consumer와 Supplier는 standard functional interfaces 중 하나이다. Consumer => Interface Consumer Supplier -> Interface Supplier Consumer의 경우 매개값은 있고, 리턴값은 없다. Supplier의 경우 매개값은 없으며, 리턴값이 있다. Consumer consumer = str -> System.out.println(str + " 8"); consumer.accept("Java"); // accept 함수 구현 //Java출력 Supplier intSupplier = () -> { int num = (int) (Math.random() * 6) + 1; return num; }; // 람다식 int num = i..
-
[Java]Optional 활용법JAVA 2021. 12. 17. 20:02
1. ifPresent() - get() 대신 orElse()/orElseGet()/orElseThrow() 쓰기 더 직관적으로, 코드를 한줄이라도 줄일 수있다. // 안 좋은 예시 Optional member = ...; if (member.isPresent()) { return member.get(); } else { return null; } // 좋은 예시 Optional member = ...; return member.orElse(null); // 안 좋은 예시 Optional member = ...; if (member.isPresent()) { return member.get(); } else { throw new NoSuchElementException(); } // 좋은 예시 Optio..
-
[Java] OptionalJAVA 2021. 12. 17. 15:58
Optional클래스는 래퍼클래스다. Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 회피할 수 있으며, 보다 직관적인 처리를 할 수 있다. Optinonal 객체 생성 //filter Optional.of("True").filter((value)-> "True".equals(value)).orElse("No Data"); //"True" Optional.of("False").filter((value)-> "True".equals(value)).orElse("No Data"); //"No Data" //map Optional.of("1").map(Integer::valueof).orElseThrow(NoSuchElementException..
-
[Java] java8 streamJAVA 2021. 12. 17. 00:54
java8부터 지원이 된 stream은 람다함수형식으로 간결하고 직관적으로 요소들을 처리가 가능한 기능이다. 이러한 stream을 이용해 for문 등 직관적이지 않은 처리들을 깔끔하게 처리할 수 있다. Stream의 구조 stream의 구조는 크게 세가지로 볼 수 있다. 1. stream의 생성 2. 중개 연산 3. 최종 연산 세가지로 구성되있으며, 중개연산은 연산결과를 stream형태로 반환하기 때문에 연속적으로 사용할 수 있다. 대략적인 구조는 데이터소스객체집합.stream생성().중개연산().최종연산(); 이다. Stream 생성 스트림 api는 다음과 같은 다양한 종류의 소스들에 사용할 수 있다. 1. 컬렉션 2. 배열 3. 가변 매개변수 4. 지정된 범위의 연속된 정수 5. 특정 타입의 난수 6..
-
[Java] 메소드 참조(method reference)JAVA 2021. 12. 16. 18:57
메소드 참조(method reference)는 람다 표현식이 단 하나의 메소드만을 호출하는 경우에 람다 표현식에서 불필요한 매개변수를 제거하고 사용할 수 있도록 해줍니다. 문법 클래스 이름::메소드 이름 or 참조변수 이름::메소드 이름 예제 (a, b) -> Class.function(a, b); // 람다 표현식 Class::function; // 메소드 참조 s -> s.toUpperCase(); // 람다 표현식 String::toUpperCase; // 메소드 참조 생성자 참조 생성자를 호출하는 람다 표현식도 메소드 참조를 이용할 수있다. 예제 (a) -> {return new Object(a); } //람다 표현식 Object::new; // 메소드 참조 출처 : 코딩의 시작, TCP School