반응형

Java 16

[Java] 자료구조 Map 반복문 사용하기

반복문 1 (Iterator 이용)Iterator keys = map.keySet().iterator();while (keys.hasNext()) { String key = keys.next(); String value = map.get(name);}  반복문2 (Entry 이용)for (Map.Entry entry : map.entrySet()) { String key = entry.getKey(); String value = entry.getValue();}  반복문3 (key로 value 찾기)for (String key : map.keySet()) { String value = map.get(key);}  반복문4 (자바8 이후 사용가능)map.forEach((key, ..

Java 2024.04.26

[Java] LinkedList 순회하기 위한 ListIterator 사용하기

LinkedList는 일반 List보다 삽입, 삭제가 빠르다는 장점이 있다. 하지만 index를 사용하여 추가, 삭제, 조회한다면 LinkedList를 이용할 이유가 없어진다. 따라서, index를 사용하지말고 ListIterator 의 메서드를 사용하면 빠른 속도로 처리할 수 있다. ListIterator 메서드 메서드 설명 boolean hasNext() Iterator를 앞 방향으로 진행하며 객체를 확인 다음 객체가 있으면 true, 없으면 false 반환 boolean hasPrevious() Iterator를 반대 방향으로 진행하며 객체를 확인 이 객체가 있으면 true, 없으면 false 반환 Object next() iteration에서 다음 객체를 리턴 Object previous() it..

Java 2023.10.29

[이펙티브 자바] Item1 생성자 대신 정적 팩터리 메서드를 고려하라

클라이언트가 클래스의 인스턴스를 얻는 방법은 2가지다. 1. 클래스의 Public 생성자 2. 정적 팩터리 메서드 (static factory method) 정적 팩터리 메서드란 new 키워드를 직접 사용하는 것이 아니라 정적 팩터리 메서드 내부에서 new 를 사용해 객체를 생성한 다음 그 객체를 반환해주는 것을 말한다. 생성자와 비교했을 때 정적 팩터리 메서드의 장점은? 1. 이름을 가질 수 있다. - 생성자 사용 방식 class Person { private String name; private String addr; // 생성자1 public Person (String name, String addr) { this.name = name; this.addr = addr; } // 생성자2 public..

Java 2023.02.23

[이펙티브 자바] Item 64 객체는 인터페이스를 사용해 참조하라

예제 // 인터페이스 참조한 예 Set set = new LinkedHashSet(); // 그렇지 않은 예 LinkedHashSet set = new LinkedHashSet(); LinkedHashSet 은 Set 인터페이스를 상속받고 있다. 위의 예제에서는 LinkedHashSet을 Set 타입으로 업캐스팅하여 사용하고 있다. ※ 주의: 업캐스팅으로 인해 set은 Set 타입이므로 LinkedHashSet 에만 존재하는 기능을 사용할 수 없게 됨 WHY?? 왜 인터페이스를 참조하라는 걸까? ( 더 나은 성능을 위해 ) 원래의 타입을 변경해야 하는 경우 예제 // 인터페이스를 참조한 예 // 구현체(LinkedHashSet -> HashSet)를 변경해도 코드는 변경되지 않음 Set set = new..

Java 2023.02.07

[Java] 조합 알고리즘 java 코드로 구현하기

조합이란? 배열에서 몇개를 중복없이 추출하는 것을 말한다. 예를 들면, 배열 int[] arr = {1, 2, 3, 4} 에서 2개의 요소만 중복없이 추출하고 싶은 경우 [1, 2], [2, 3], [3, 4] [1, 3], [2, 4] [1, 4] 총 6개가 출력되어야 한다. 조합을 구현할때 백트래킹과 재귀함수 방법이 있다고 한다. 나는 너무 헷갈려서 우선 가장 간단한 예제로 조합을 구현해보았고, 나중에 프로그래머스에서 문제 풀 때 조건만 다르게 해서 적용해 볼 예정이다. 코드 class CombinationExample { public static void main(String[] args) { int[] arr = {1,2,3,4}; getCombination(arr); } public static..

Java 2023.02.06

[이펙티브 자바] Item 61. 박싱된 기본 타입보다는 기본 타입을 사용하라

기본 타입이란 int, double, boolean ... 박싱된 기본 타입이란 기본 타입과 1대1 대칭되는 Integer, Double, Boolean ... 기본 타입과 박싱된 기본 타입의 차이점 1. 기본 타입은 값만 가지고 있고, 박싱된 기본 타입(참조 타입)은 값 + 식별성을 가진다. 박싱된 기본 타입은 두 인스턴스의 값이 같아도 서로 다른 객체임. 예제 int i = 1, j = 1; Integer k = new Integer(2); Integer l = new Integer(2); if (i == j) System.out.println("i와 j는 같다!"); if (k == l) System.out.println("k와 l은 같다!"); → 'i와 j는 같다!' 라고 출력되지만 'k와 l은..

Java 2023.01.30

Stack에 대하여

Java에서 Stack은 java.util 패키지에서 Stack클래스로 제공한다. 스택은 FILO, LIFO 구조로, 먼저 들어간 데이터가 가장 마지막에 꺼내진다. - 요소 추가하는 push(value) 메서드 제공 - 맨 위의 요소 꺼내고 스택에서 삭제하는 pop() 메서드 제공 - 맨 위의 요소 값 보여주는 peek() 메서드 제공 사용방법 Stack stack = new Stack(); stack.push(1); stack.push(3); stack.push(5); System.out.println(stack.pop());//5반환 예시 - 웹 브라우저에서 뒤로 가기 : 가장 나중에 열린 페이지부터 보여줌 - 실행취소 (undo, ctrl + z) : 가장 나중에 실행된 것부터 취소함 - 후위 표기..

Java 2022.10.05

Queue 에 대하여

Java에서 Queue는 java.util 패키지에서 Queue 클래스로 제공한다. 큐는 FIFO, LILO 구조로, 먼저 들어간 데이터가 먼저 꺼내진다. - Enqueue 하는 메서드 add(value), offer(value) 제공 - Dequeue 하는 메서드 remove(), poll() 제공 - 맨 앞에 있는 요소를 꺼내는 메서드 element(), peek() 제공 사용방법 Queue queue = new LinkenList(); queue.add(1); queue.offer(2); //현재 queue에는 1,2가 담겨있음 queue.remove(); //1꺼내짐 queue.poll(); //2꺼내짐 queue.element();//큐가 비어서 예외 발생 queue.peek();//큐가 비어서..

Java 2022.10.05

[Java] POI 라이브러리 엑셀 다운로드

1. 라이브러리를 추가한다. 2. VO를 생성해준다. - 엑셀 파일: ExcelVO public class ExcelVO { private String fileName;//엑셀 파일명 private Stirng sheetName;//시트명 private int freezePaneCol;//고정col private int freezePaneRow;//고정row private DataVO dataVO;//데이터의 VO final List cellVOList=new ArrayList();//셀을 담은 List; } - 엑셀을 이루는 Cell: CellVO public class CellVO { private String field;//VO의 필드값을 넣어줌 private String header;//엑셀의 첫..

Java 2022.05.18

System.getProperty() 란?

Java에서 코드 작성 시 운영체제 정보나 현재 파일의 위치 등이 필요할 때 사용한다. System.getProperty() 안에 검색어를 입력하면 그 값이 String 타입으로 반환된다. ex) // 현재 디렉토리 위치 반환 String currentDir = System.getProperty("user.dir"); 첨부파일 업로드/다운로드 시 경로 설정에 사용할 수 있음 ()안에 들어갈 검색어로는 java.version , java.vendor , java.home , java.class.path , os.name , os.version , user.name , user.home , user.dir ...

Java 2022.03.30
반응형