개발언어/JAVA
-
JAVA 기본 - 에러 처리 구조, JAVA메모리 사용 관행개발언어/JAVA 2023. 12. 27. 11:48
에러 처리 구조 어떤 지점에서 발생할 수 있는 에러에 대해 장치를 해놓으면 디 버깅 시간을 절약할 수 있다. 즉, 에러 상황이 발생했을 때 적절하게 처리하면 프로그램을 종료하거나 계속 수행할 수 있다. 자바에는 에러가 발생할 때 미리 지정한 에러 객체를 생성해서 던지는 기능이 있다. throw기능이다. Heap.java public class Heap{ ... public Heap(int n){ item = new int[n]; size = 0; maxHeap =n; } 1️⃣class HeapException extends Exception{ // 에러 클래스 설계 public HeapException(String msg){ super(meg); } } 2️⃣public void insert(int n..
-
JAVA 자료구조 (배열) - 주식을 사고팔기 가장 좋은 시점개발언어/JAVA 2023. 12. 22. 11:40
주식을 사고팔기 가장 좋은 시점 풀이1 - 브루트 포스로 계산 이 문제는 저점에서 사서 고점에 팔아, 낼 수 있는 최대 이익을 찾는 흥미로운 문제다. 가장 먼저 접근할 풀이법은 당연히 브루트 포스다. 처음부터O(n²)으로 사고팔고를 반복하면, 최대 이익을 산출할 수 있다. public int solution(int [] prices) { int maxProfit = 0; //구매 시점 순회 처음부터 끝까지 차례대로 반복한다. for(int i = 0; i < prices.length; i++){ //판맨 시점 순회,구매 부터 끝까지 차례대로 반복한다. for(int j = i+1; j < prices.length; j++){ // 판매 시점 가격에서 구매 시점 가격을 뺄 때 가장 높은 금액 찾기 maxP..
-
JAVA 람다와 스트림 - 컬렉션 프레임워크(CF)와 함수형 인터페이스개발언어/JAVA 2023. 12. 18. 16:50
컬렉션 프레임워크(CF)와 함수형 인터페이스 JDK 1.8(Java8)부터 함수형 인터페이스 기능이 추가 되었다 그러면서 컬렉션 프레임워크에도 많은 변화가 있었다. 람다식을 사용해서 작업을 좀더 쉽게 처리할 수 있는 메서드들이 추가 된 것이다. ▶ 함수형 인터페이스를 사용하는 컬렉션 프레임워크의 메서드(와일드 카드 생략) 인터페이스 메서드 설명 Collection boolean removeIf(Predicate filter) 조건에 맞는 요소를 삭제 List void replaceAll(UnaryOperator operator) 모든 요소를 변환하여 대체 iterable void forEach(Consumer action) 모든 요소에 작업 action을 수행 Map V compute(K key, BiF..
-
JAVA람다와 스트림 - Predicate의 결합개발언어/JAVA 2023. 12. 18. 15:54
Predicate의 결합 ▶ && and(), || or(), != negate()로 Predicate를 하나로 결합(default메서드) Predicate가 함수형 인터페이스 이므로 default 메서드, static 메서드, 추상메서드를 가질 수 있다. Predicate p = i -> i i i%2 == 0; 위 코드와 같은 조건식들이 있을 때 조건식들을 and(), or(), negate()를 활용해서 결합할 수 있다. Predicate notP = p.negate(); // i >= 100 Predicate all = notP.and(q).or(r); // 100 Integer.toBinaryStri..
-
JAVA 람다와 스트림 - java.util.funtion 패키지개발언어/JAVA 2023. 12. 18. 13:11
java.util.funtion 패키지 ▶ 자주 사용되는 다양한 함수형 인터페이스를 제공 Predicate 예시 Predicate isEmptyStr = s -> s.length()==0; String s = ""; if(isEmptyStr.test(s)) //if(s.lengh()==0); System.out.println("This is empty String"); 함수형 인터페이스 Predicate를 사용할 때 람다 함수의 반환 값의 타입은 boolean이어야 한다. ▶ 매개변수가 2개인 함수형 인터페이스 매개 변수를 2개 받는 함수형 인터페이스 까지는 미리 정의 가 되어있지만 3개를 받는 것은 정의되어 있지 않다. 매개변수를 3개 가지는 함수형 인터페이스 @FunctionalInterface in..
-
JAVA 람다와 스트림 - 함수형 인터페이스개발언어/JAVA 2023. 12. 15. 16:50
함수형 인터페이스 ▶ 함수형 인터페이스 - 단 하나의 추상 메서드만 선언된 인터페이스 @FunctionalInterface interface MyFunction{ public abstract int max(int a, int b); } 인터페이스의 모든 메서드는 public이면서 abctract하기 때문에 2가지 키워드는 생략 가능하다. 💡 tip) 오버라이딩(Overriding)제어자 오버라이딩은 할 때 오버라이딩 하는 메서드의 접근 제어자는 넓은 범위에서 좁은 범위로 바꿀 수 없다. 즉 인터페이스에서 public 접근제어자 메서드를 오버라이딩 하여 구현하면 default, private으로 바꿀 수 없다. MyFunction 구현 MyFunction f = new MyFuction(){ public ..
-
JAVA 람다와 스트림 - 람다식(Lambda Expression)개발언어/JAVA 2023. 12. 15. 14:30
람다식(Lambda Expression) 자바는 원래 객체 지향(OOP)언어이지만 JDK1.8 부터는 함수형 언어의 기능을 추가했다. 따라서 자바8부터는 OOP언어이 동시에 함수형언어 라고 할 수 있다. 하지만 완전히 함수형 언어도 겸비한다고 하기에는 무리가 있고 함수형 언어의 기능을 포함했다고 보는 편이 더 정확하다. 익명 클래스(anonymous class) 이름이 없는 일회용 클래스. 정의와 생성을 동시에 한다. 익명 클래스의 객체 인스턴스 생성 new Object(){ // 클래스 정의부 } class Example{ //익명 클래스 Object iv = new Object(){ void method(){} }; //익명 클래스 static Object cv = new Object(){ void ..
-
Java - 컬렉션 프레임워크(제네릭)1-1개발언어/JAVA 2023. 11. 7. 13:46
제네릭 제네릭이란? 프로그램에서 변수를 선언할 때 모든 변수는 자료형이 있다. 메서드에서 매개변수를 사용할 때도 자료형을 가지고 있다. 대부분은 하나의 자료형으로 구현한지만, 변수나 메서드의 자료형을 필요에 다라 여러 자료형으로 바꿀 수 있다면 프로그램이 훨씬 유연할 것이다. 이와 같이 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 프로그래밍하는 것을 '제네릭(Generic) 프로그래밍'이라고 한다. 제네릭 프로그램은 참조 자료형이 변환될 때 이에 대한 검증을 컴파일러가 하므로 안정적이다. 제네릭의 필요성 3D프린터를 예로 들어 제네릭에 대해 이해해보자 3D프린터는 재료를 가지고 입체 모형을 만드는 일을 한다. 프린터에 스이는 재료는 여러가지가 있을 수 있는데, 쌓아 올려 입..