Java로 리스트를 섞는 가장 쉬운 방법은 내장 객체인 Collections 객체의 셔플(Shuffle)을 사용하는 것이다. Shuffle 사용 Collections(리스트) 로또번호를 셔플(Shuffle)로 이용해서 만들면 매우 간단하고, 견고하게 만들 수 있다. 로또번호(Lotto Number) 생성 1-45번호 세팅 List numList = new ArrayList(); for (int i = 1; i [29, 5, 18, 12, 20, 6, 30, 10, 41, 15, 25, 45, 23, 3, 44, 42, 31, 9, 1, 14, 24, 2, 17, 8, 21, 40, 33, 7, 39, 13, 34, 4, 32, 37, 38, 26, 36, 11, 19, 43, 16, 27, 28, 22,..
List안에 들어간 값들을 기준으로 오름차순(Ascending)과 내림차순(Descending) 즉, 정렬을 하는 방법을 알아보도록 하겠습니다. 테스트를 위해서 다음과 같은 주식 종목값들을 넣어봤습니다. 리스트 예제 public static void main(String[] args) { List list = new ArrayList (); list.add("삼성전자"); list.add("테슬라"); list.add("애플"); list.add("엔비디아"); } 이 값들이 오름차순이 된다면, 삼성전자 -> 애플 -> 엔비디아 -> 테슬라 순으로 나와야 될 것입니다. 자바는 Collections이라는 내장 객체를 사용해서 쉽게 정렬을 할 수 있습니다. 오름차순 // 오름차순 Collections.sor..
자바로 파일 및 폴더를 핸들링하기 매우 쉬운데 폴더의 유무를 확인하고, 없을 경우 생성하며 특정 폴더를 삭제하는 것을 알아보도록 한다. C 드라이브에 Project/test 폴더를 생성하고 그 안에 test2라는 폴더를 추가로 생성하였다. 우리는 앞으로 이 폴더안에 test1을 추가로 생성하고, test2는 삭제하는 것을 알아보도록 한다. 폴더 여부 체크하기 (exists) public static void main(String[] args) throws Exception { File folder = new File("c:/project/test/test"); if(!folder.exists()) { // 폴더가 없을 경우 로직 } } Java에서 폴더를 체크하는 것은 파일이 있는지 체크하는 것과 동일하..
이제 막 개발을 시작한 개발자라면 인터페이스의 필요성에 대해서 공감이 안되겠지만, 개발 경력이 어느정도 되었으며 협력을 하였고, 개발을 하기 전에 설계를 하는 개발자라면 인터페이스의 필요성에 대해서 더이상 말을 할 필요가 없을 것이다. 우리가 자동차를 만든다고 해보자 재료는 모두 갖추어져 있고 만들 기술과 장비가 있다고 한다면 현재 가장 필요한 것이 무엇일까? 바로 "설계도"일 것이다. 개발이든 건축을 하든 아니면 자동차를 만들든 제일 먼저 해야 될 것은 설계를 해야 하고 검증을 통해서 이상이 없다면 개발을 시작할 수 있다. 인터페이스는 바로 이 설계도와 유사하다. 개발자들은 비즈니스 로직이 되는 서비스단을 구현하기 위해서 필요한 메소드(method)를 미리 인터페이스화 시킨 후 이를 구현 하여 최종적으..
이클립스에서 원치 않는 에러가 나올 경우가 있다. 예를 들어, 소스를 나눴을 때 제대로 열고 닫음이 없어서 에러로 인식을 해버릴 수 있다. 이렇게 원치 않은 에러가 나올경우 무시를 하면 되는데 자바스크립트(js) 파일을 기준으로 설명을 해보고자 한다. 보통 부트스트랩(bootstrap) 소스를 받아다가 작업을 하다보면 상당히 많은 프로젝트에서 에러가 발생하고 대다수는 자바스크립트이다. 위 예제는 부트스트랩 내에 있는 plugins에 있는 자바스크립트에서 에러가 발생하였는데 이를 없애보도록 한다. Step by Step 우선 해당 프로젝트를 선택 후, Project 메뉴에서 제일 하단의 Properties를 선택한다. Javascript 메뉴에서 Include Path를 선택하고 Excluded를 더블클릭..
보편적인 if~else 문 public static void test1 () { String grade = ""; int math = 70; if(math >= 90) grade = "pass"; else grade = "fail"; System.out.println(math + " is " + grade); } // 70 is fail 일반적으로 if ~ else 구문을 사용할 때에는 이와같이 변수들을 세팅하여 각 조건마다 값을 세팅한다. 위 예제는 math값이 90이 넘을 경우 pass이고 그렇지 못할 경우, fail인데 math값이 70이기 때문에 "70 is fail"이라는 결과를 화면에 뿌려준다. default를 세팅하여 라인을 줄인 else 문 public static void test2 ()..
IndexOf는 문자열에서 특정 단어가 있는지를 찾고 있을 경우 위치값을 리턴하는 내장 함수이다. 위치값은 0부터 시작하기 때문에 0 이상값이 나오면 결과가 리턴이 되고, -1인 경우 해당 값이 없을 경우이다. 그러나 이 메소드는 위치값을 찾을 경우 그 자리에서 종료를 하기 때문에 별도의 처리를 해야 모든 위치를 찾을 수 없다. 내가 검색을 못한건지, 아직 모든 위치를 리턴하는 함수를 찾지 못하였다(혹시나 indexOfAll같은 것이 있나 싶었지만...) 비슷한 역할을 하는 함수로 contains가 있는데 이는 값이 있는지 여부를 찾으며, true, false로 리턴하는 함수이기 때문에 indexOf보다 범용적이지 못하다. 모든 위치 찾기 예제 public static void main(String[] ..
많은 사람들이 SimpleDateFormat에 대해서 이제는 많이들 알고 있을 것이다. 그러나, Calendar를 핸들링하는 것이 익숙치 않을 것이라 생각한다. 이런걸 만들어 볼 이유도 없고 보통 DB를 핸들링하지 자바에서 날짜를 핸들링하는 것이 많지 않기 때문이다. 자바에는 GregorianCalendar라는 클래스가 존재한다. 이 캘린더 클래스를 이용하면 날짜값을 매우 쉽게 핸들링하는 것이 가능하다. getTime 함수 GregorianCalendar cal = new GregorianCalendar(); System.out.println(cal.getTime()); 아무것도 건드리지 않고 위 그레고리안캘린더를 생성 후 getTime을 출력하면 결과 Thu Dec 10 18:12:05 KST 2020..
자바(Java) 언어는 컴퓨터에게 랜덤값을 뿌리는 2가지 방법(설치시 내장)을 제공해주고 있다. 하나는 java.lang.math 클래스의 메소드인 random 함수가 있고, java.util.random 클래스에서 사용하는 랜덤함수가 있다. 여기서는 랜덤에서 꼭 알아야 될 Seed에 대한 설명과, 가장 많이 활용되고 있는 java.util.random 클래스를 이용법을 정리해보고자 한다. Seed에 대해 컴퓨터는 기본적으로 난수를 생성할 수 없다. 사람이란 존재는 현재 수많은 상황에 놓여져 있고, 매번 유사한 상황이 된다 하더라도 다른 선택을 할 수 있다 바로 소울(soul)이란 존재를 갖고 있기 때문이다. 그러나 컴퓨터는 인간과 같은 상황에 놓이기 힘들고, 동일한 상태값이 들어오면 동일한 값을 출력하..
Java는 파일 객체를 다룰 수 있는 File이라는 클래스를 제공한다. 이를 통해 다양한 파일 컨트롤을 할 수 있는데 아주 기본적이고 기초적이면서 프로그램 전공이 아닌 사람들은 힘들어 하는 재귀 함수(Recursive function)에 대해서 작성해보도록 한다. 재귀 함수는 메소드가 자신을 계속 호출하는 즉 재귀호출 기능이 있는 함수를 말한다. 이를 통해 하위 Depth의 값들을 처리할 수 있다. parent code가 있고 child code가 있을 경우 child code는 parent code를 탐색하며 재귀 호출을 할 수도 있고 그 반대로 처리하여 하위 Depth로 내려갈 수도 있다. 백문이불여일타니 아래의 소스코드를 이해해보도록 한다. 재귀함수로 파일 스캔 import java.io.File;..
로또(Lotto)는 1부터 45까지의 숫자로 이루어진 값들 중 6개를 맞히는 복권이다. 즉 로또 번호를 생성한다는 것은 6번의 숫자를 생성해야 하며 이 숫자는 1부터 45까지 사이의 범위로 되어 있어야 하고, 각각의 값들은 서로 중복이 되면 안된다. 간혹 로또 번호를 생성한다는 알고리즘을 보여주면서, 중복이 될 수 있는 구조로 짠 알고리즘들을 보여주는데 이는 정확한 로또 번호 생성기라 말하기 어렵다. 로또 번호 생성이야 만드는 방법이 수십, 수백가지는 되겠지만 아래는 그냥 필자가 생각한 로또 번호 생성 알고리즘이다. 로또 번호 생성기 import java.util.HashMap; import java.util.Map; import java.util.Random; public class main { pub..
DB를 가져올 때 날짜 포맷을 변경하여 처리할 수 있지만, 포맷을 변경하기 힘든 NoSQL DB 라든지 혹은 포맷을 변경하기 힘든 케이스의 경우 자바(Java)에서 지원하는 기능인 SimpleDateFormat을 사용하여 포맷을 변경할 수 있다. SimpleDateFormat 날짜를 바꾸기 위해서는 java에 내장되어 있는 SimpleDateFormat을 활용하여 포맷을 변경한다. 라이브러리의 이름처럼 심플하게 데이트 형태로 포맷을 변경한다. 데이트포맷 옵션 포맷문자 날짜 및 시간 요소 표현 예시 G Era designator Text AD y Year Year 1996; 96 Y Week year Year 2009; 09 M Month in year (context sensitive) Month Jul..