본문 바로가기

Develop/Java41

Java 진수 변환 10진수 → n진수 public class Test { public static void main(String[] args) { int k = 15; System.out.println("10진수 → 2진수"); System.out.println(Integer.toString(k,2)); System.out.println(Integer.toBinaryString(k)); System.out.println(); System.out.println("10진수 → 3진수"); System.out.println(Integer.toString(k,3)); System.out.println(); System.out.println("10진수 → 4진수"); System.out.println(Integer.toString.. 2023. 2. 18.
2개의 List를 Stream을 사용하여 비교하기 noneMatch ( 불일치하는 요소 ) import java.util.Arrays; import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; public class Test { public static void main(String[] args) { List str1List = Arrays.asList("ab", "bc", "cd", "ef", "fg"); List str2List = Arrays.asList("cd", "ef", "fg", "gh", "hi"); List filteredList = str1List.stream() .filter(el -> str2List.stream().n.. 2023. 2. 17.
Map 순회하기 Iterator 사용 Map map = new HashMap(); Iterator keys = map.keySet().iterator(); while (keys.hasNext()) { String key = keys.next(); map.get(key); } entrySet 사용 Map map = new HashMap(); for (Map.Entry entry : map.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); } Map은 Key-Value 쌍으로 이루어져있고, 이 한 묶음을 Entry라고 표현한다. keySet 사용 Map map = new HashMap(); for (String key : map.keySe.. 2023. 2. 10.
ArrayList vs LinkedList List 인터페이스는 Java의 Collection을 확장한 인터페이스이다. ArrayList와 LinkedList 모두 이 List 인터페이스의 구현체이다. ArrayList 먼저, ArrayList는 배열(array)에 기반을 두고 있다. index를 통한 요소 검색에 빠르다는 장점이 있지만, 요소의 추가 삭제가 느리다는 단점이 있다. ArrayList의 일반적인 add() 메서드(맨 마지막 요소 뒤에 요소를 추가하는)를 통한 요소 삽입은 시간복잡도 Big-O 기준 O(1)의 시간복잡도를 가진다. 그러나, 특정 요소 사이에 요소를 삽입하거나 삭제하는 과정의 시간복잡도는 O(n)을 가진다. LinkedList LinkedList는 각 노드(Node)가 서로 연결되어 있는 형태이다. 링크를 건다라는 말을.. 2023. 2. 9.
BigDecimal 금융 관련 프로젝트 도중 double보다 큰 값과 세세하게 계산할 수 있는 타입이 필요했다. BigDecimal 클래스는 Java에서 숫자를 정밀하게 저장하고 표현할 수 있는 유일한 방법이다. (금융권에서는 대부분 BigDecimal을 주로 사용한다) BigDecimal 선언 BigDecimal a = new BigDecimal(100.0);/ --- 첫 번째 방법 BigDecimal a = BigDecimal.valueOf(100.0);/ --- 두 번째 방법 BigDecimal 대소 비교 BigDecimal a = BigDecimal.valueOf(100.0); BigDecimal b = BigDecimal.valueOf(100.0); // 동등 비교 a == b/ --- 첫 번째 방법 a.equal.. 2023. 1. 25.
중첩 삼항연산자 삼항연산자 문법 및 사용법 조건 ? 참인 경우 반환 값 : 거짓인 경우 반환 값 if문 예제 public class Test { public String ternaryOperator { int a = 1; if (a == 1) { return "a는 1임"; } else return "a는 1이 아님"; } } 삼항연산자 예제 public class Test { public String ternaryOperator { int a = 1; return a == 1 ? "a는 1임" : "a는 1이 아님"; } } 중첩 if문 예제 public class Test { public String ternaryOperator { int a = 1; int b = 2; if (a == 1) { if (b == 2).. 2022. 11. 26.
ArrayList vs HashMap 알고리즘을 풀면서, 특정 값을 찾아 처리하려고 할 때 둘의 효율성 차이가 존재한다는 것을 알 수 있었다. 우선, 둘을 비교해보자. ArrayList와 HashMap 모두 Java의 컬렉션 프레임워크의 클래스들을 사용하지만, 자료를 저장하고 처리하는 방법이 다르다. ArrayList는 배열을 이용한 index 기반의 자료 구조인 반면에, HashMap은 해싱을 통해 저장된 값들을 찾아오는 자료 구조이다. 해싱이란 산술적인 연산을 이용하여, 키가 있는 위치를 계산해서 찾아가는 검색 방식이다. 둘 다 저장된 객체들을 이용한다지만, 구현하고 사용하는 과정이 좀 다르다고 할 수 있다. 다음 표를 통해, 차이점을 알아보자. ArrayList HashMap List 인터페이스를 구현 Map 인터페이스를 구현 요소의 .. 2022. 11. 5.
ArrayList 생성 시, List 인터페이스로 선언하는 이유 보통 ArrayList를 생성하려고 한다면, 다음과 같이 생성하는 걸 많이 보게 된다. List list = new ArrayList(); List라는 인터페이스로 선언을 하는 식인데, 이렇게 업캐스팅해서 선언하는 이유가 있었다. 객체 지향 프로그래밍의 일환으로, 다형성을 지원하기 위해서라고 한다. 즉, 변경에 유연하게 하기 위함이란 의미이다. 만약, ArrayList라는 인스턴스로 선언하고 있다고 가정해보자. 데이터의 용도가 바뀌게 되어서 자료구조 LinkedList로 변경을 해야한다고 할 때, 서로가 호환되지 않는 메서드들은 모두 수정이 필요하게 된다. 이는 변경에 유연하지 못한 설계이다. 반면에, 인터페이스 List라는 인스턴스로 선언하게 된다면, 선언부만 LinkedList로 변경해주고 이외에 다.. 2022. 10. 18.
배열 내용 출력하기 배열의 내용들을 출력하기 위해서, toString() 메서드를 이용하면 주소값이 나온다. 그렇기 때문에, Arrays의 API를 사용해주어야 한다. (전 자주 헷갈립니다..😅) 2022. 10. 14.