본문 바로가기

자바

엑셀 시트 읽어오기 //우선 엑셀파일 경로를 읽어온다 URL resource = yourJavaFile.class.getResource("/yourFolder/excels/file.xlsx"); String filePath = resource.getFile(); //파일 읽기 FileInputStream file = new FileInputStream(filePath); XSSFWorkbook workbook = new XSSFWorkbook(file); List sheetLst = new ArrayList(); List columnNmLst = new ArrayList(); int rowindex = 0; int columnindex = 0; //컬럼명이 첫번째 줄에 있을 거라고 가정 //시트 가져오기, 첫번째 시트만 사.. 더보기
Map.Entry Map의 static nested class로 Map을 다룰 때 유용하다. (key, value)로 하나의 쌍을 이루는 콜렉션이다. 1. Map객체에서 Entry 가져오기. Map map = new HashMap(); map.put("올해 나이", 28); map.put("현재 재산", 30000); for(Map.Entry e : map.entrySet()){ System.out.printf(e.getKey()+": "+e.getValue()); } /* 출력 올해 나이: 28 현재 재산: 30000 */ 그리고 .entrySet()으로 (key, value)의 mappings이 반환됐기 때문에 Entry를 변경하면 Map도 변경된다. for(Map.Entry e : map.entrySet()){ if.. 더보기
Optional에 대하여 Optional 클래스는 Java8버전에서부터 지원한다. 본 글은 내가 실제로 사용하는 부분만을 간결하게 적어놓았기 때문에, 더욱 자세한 정보가 궁금하다면 내가 참고하였던 블로그에 들어가 보는 것을 추천한다. - 참고 블로그 : https://mangkyu.tistory.com/70 /* Optional.ofNullable(getName()) : getName()에서 값이 넘어오면 값이 들어있는 Optional객체가 반환되고 null이 넘어온다면 비어있는 Optional객체가 반환되는데, 내가 Optional객체 자체를 사용할 일은 없을 것이다. 그래서 바로 .orElse("이름이 없네") : Optional클래스 메소드로 Optional객체의 값이 들어있다면 그 값을 반환하고 비어있다면 "이름이 없네".. 더보기
StringBuilder StringBuilder는 이름에서 바로 알 수 있듯이 String을 다루는 클래스이다. String은 변하지 않는 불변 객체이다. String + String을 한다던가, String을 변경한다던가 하면 본래의 String이 변하는 것이 아니라 새로 생성되는 것이다. 그래서 String을 연산하고자 한다면 메모리 할당, 해제를 발생시켜 성능이 좋지 않다. 이 때 사용하는 것이 StringBuilder이다. String을 연산할 때, 새로운 객체를 생성하는 것이 아니라 기존 객체를 갱신하는 방식을 사용하기 때문에 속도도 빠르고 부하도 적다. //StringBuilder 생성 StringBuilder sb = new StringBuilder(); //offset 위치에 문자열 추가 StringBuilder.. 더보기
그룹 합의 차이가 최소인 두 그룹으로 나누기 문제 정수 배열 하나가 있다. 이 배열을 두 그룹으로 나누는데 각 그룹의 원소들의 합을 서로 뺐을 때 가장 최솟값이 되도록 그룹을 나누어라. 그리고 그 최솟값을 반환하라. EX) [-1,6,9] -> [-1,9] , [6] -> 최솟값: 2 int[] numbers = {.....}; Arrays.sort(numbers); int curGap = 0; for(int i=0; i= 0 && curGap > perhapsGap){ curGap -= numbers[i]*2; } } return Math.abs(curGap) 더보기
소수 구하기 지정한 범위 내에 있는 소수를 찾는 코드 static ArrayList primes = new ArrayList(); public static void main(String[] args) throws Exception { getPrimes(100); // 2~100에서 소수를 찾는다. System.out.println(primes); } public static void getPrimes(int end) { boolean isPrime = true; for(int i=2; i 더보기
Comparable 과 Comparator Comparable 인터페이스를 사용하기 위해선 compareTo 메소드를 구현해야 한다. Comparator 인터페이스를 사용하기 위해선 compare 메소드를 구현해야 한다. ➜ 그러면 compareTo 와 compare 의 차이점은 무엇인가? compareTo(Type o) compare(Type o1, Type o2) ➜ 매개변수가 다르다. 코드를 통해 보는 게 더 쉽다. 1. Comparable compareTo는 객체 자신과 매개변수를 비교하는 메소드이다. class Stick implements Comparable{ int len; Stick(int len){ this.len = len; } public int compareTo(Stick o) { if(this.len - o.len < 0).. 더보기
그래프에서 DFS로 사이클 찾기 그래프를 구현하는 방법에는 인접행렬과 인접리스트가 있다. 그 중 인접리스트를 통해 그래프를 구현하려고 한다. 아래는 예시그래프와 그래프의 정점과 정점 사이의 관계를 그림으로 그려보았다. 구현하면 다음과 같다. class Graph { private ArrayList graphList; public Graph(int size) { this.graphList = new ArrayList(); for(int i=0; i 더보기