java10 Java ) Lambda(람다) 람다식 (Lambda) 자바스크립트에서 처럼 '이름없는 함수', '화살표 함수(arrow function)'를 사용할 수 있는데 이것을 자바에서 람다식이라고 표현 구현할 추상 메소드가 하나만 존재하는 인터페이스만 적용 가능함 (함수형 인터페이스 - ex: Runnable 인터페이스) = new 객체 생성 부분을 () -> { } 과 같이 람다식으로 표현 가능 람다식 미적용 new를 이용하여 Runnable() 구현 new Thread(new Runnable() { public void run() { for(int i=1; i { } 람다식을 이용하여 Runnable() 구현 new Thread(()->{ for(int i=1; i 2022. 8. 2. p596)10번 문제 - 로또 번호 생성 (TreeSet 사용) 로또번호를 생성하시오. contains()함수로 개별 요소 중복 값 확인 TreeSet을 이용하여 정렬 및 중복 값 제거 로또번호 6개 출력 Random r = new Random(); TreeSet ts = new TreeSet(); int cnt=0; while(true) { int num = r.nextInt(45)+1; if(ts.contains(num) == false) { ts.add(num); cnt++; if(ts.size()>=6) { break; } } } System.out.println(ts); 2중 루프로 로또번호 6개 * 6줄 출력 TreeSet ts = new TreeSet(); ArrayList list = new ArrayList(); for (int i=0; i=6) { .. 2022. 4. 9. p595) 8번 문제 - 이름이 등장하는 횟수를 Map에 저장해보자 각 이름 성의 개수를 출력해라. names[i] 키를 가져와서, 해당 키 값이 null이라면 1을 넣고 null이 아닐 때 (이미 성씨가 들어가 있을 경우) +1을 해서 카운트하는 개념 String names[] = {new String("kim"), new String("Choi"), new String("Park"), new String("kim"), new String("kim"), new String("Park"), new String("Park")}; HashMap map = new HashMap(); for (int i=0; i 2022. 4. 9. 자바 컬렉션 (Set, List, Map) 자바 컬렉션 - 컬렉션은 자료형이 다른것도 담을 수 있다 - 컬레션은 동적인 배열로써 자료의 추가, 삭제가 용이하다 - 데이터를 담는 것 만큼 혹은 데이터를 삭제하는 것 만큼 자동으로 크기가 늘어나고 줄어든다 Set 중복된 자료를 허용하지 않음 HashSet - 중복불가, 순서를 유지하지 않음 LinkedHashSet - 중복불가, 순서 유지 TreeSet - 정렬시켜줌 TreeSet에서 유용한 함수 1. subSet(1, 10) - set 배열에서 1~9가지의 숫자를 반환 가능 List 중복된 자료를 허용 , 순서 유지 ArrayList - 중복된 자료를 허용 , 순서 유지 LinkedList - 중복된 자료를 허용 , 순서 유지 이 두개는 사용법이 동일하나 내부 로직이 조금 다름. ArrayList에.. 2022. 4. 9. 자바 String 처리 방법 자바 String 처리 일반 String 특성은 변하지 않는 문자열 예를들어 string에 더하기 연산을 하게 되면 새로운 객체를 생성하게 되고 참조 변수는 새로운 메모리를 참조 이전에 참조하던 메모리는 더이상 참조되지 않는 garbage가 됨 그래서 String은 변하지 않을 것 같은 문자열만 처리하는게 좋다 StringBuffer 특성은 변하는 문자열 StringBuffer는 String과 다르게 원래 객체에 배열을 추가 append()함수를 이용하여 문자열을 추가할 수 있음 StringBuffer를 String으로 받는 방법 1. new String(stringbuffer) -> StringBuffer형식을 String으로 받고 싶을 때 2. stringBuffer.tostring() -> to.s.. 2022. 4. 7. (Java) 9일차 익명 클래스 객체 생성 시 ctrl + space -> Anonymous Inner Type 원래 추상클래스는 객체를 만들 수 없다. 왜 생성할 수 없냐면 추상메소드를 선언만 하고 정의하지 않았기 때문인데, 추상클래스를 객체로 만들고 싶다면 객체 생성 시에 추상메소드를 정의하면 된다. 추상클래스를 상속받은 클래스를 정의하는데 따로 이름을 정해주지 않고 바로 추상메소드를 오버라이딩한 클래스를 만들면서 바로객 체를 생성할때에 객체를 생성함과 동시에 추상메소드를 정의할 수 있음 객체 생성과 동시에 추상 메소드 정의 인터페이스 (interface) 다중 상속의 효과를 기대할 목적으로 "인터페이스"를 사용 다중 상속을 하려면 클래스는 말고 인터페이스를 사용 해야한다. 인터페이스는 상수와 추상 메소드로로 구성 인터.. 2022. 4. 7. (Java) 7일차 메소드의 중복(Method Overloading) - 동일한 메소드 명이라도 자료형이나 매개변수의 개수가 다를 경우 다른 메소드로 취급 배열 매개변수로 넘기기 - arr배열을 그대로 매개변수로 넘김 int []arr = {6,2,3,9,7}; System.out.println(util.getMax(arr)); class 변수, class 메소드 static 변수, static 메소드 = 정적변수, 정적 메소드라고도 부름 class 변수 멤버변수 앞에 static 키워드가 붙어있는 변수를 말하며 객체 생성을 하지 않고 사용할 수 있음. class 메소드 메소드명 앞에 static 키워드가 붙어있는 메소드를 말하며 객체 생성을 하지 않고 사용할 수 있음 모두 클래스 이름으로 접근 가능하다. 클래스명.속성 c.. 2022. 4. 5. (Java) n차원 배열, ArrayList 일반 배열 자료형이 같은 기억장소의 모임 int [ ]변수명1; // 배열의 선언 변수명1 = new int [ 배열의 개수 ]; // 배열의 생성 int []student= {28,23,27,26,26}; //배열의 선언과 동시에 초기화까지 2차원 배열 2차원 배열에서 length는 행의 길이임 int [][]b = new int[4][3]; // 4*3 배열 생성 문) 아래와 같이 출력 할 것 //5행 5열의 정수형 2차원 배열을 생성하고, 1부터 1씩 증가한 값을 저장 //조건 1: 맨 마지막 열에는 각 행의 합이 누적 되도록하고 //조건 2: 맨 마지막 행에는 각 열의 합이 누적되도록 함 //조건 3: 그리고 마지막 행 열에는 모든 요소의 총 합이 누적 되도록 함 // 0 1 2 3 4 // 0 .. 2022. 3. 30. (Java) 약수 및 소수 구하기 약수 및 소수 구하기 정수 n을 입력받아 약수 구하는 방법 약수의 개수(cnt) 가 2개일 경우 소수로 판단 가능함 Scanner sc = new Scanner(System.in); System.out.println("N을 입력하세요==> "); int n = sc.nextInt(); int cnt=0; // 약수의 개수를 저장 System.out.print(n+ "의 약수는 "); for(int k=1; k 2022. 3. 30. [Java] 입출력 함수(BufferedReader, BufferedWriter) 자바에서 입출력은 Scanner / System.out.print() 보통 많이 이용한다. 하지만 간혹 알고리즘 문제를 풀다보면 더 빠르게 입력과 출력을 해야하는 상황이 생긴다. 이럴때 Bufferedreader / BufferedWriter 를 사용한다 BufferedReader 말 그대로 버퍼를 이용하여 입력하는 것이다. 입력 값을 한방에 출력하기 위해 버퍼에 값을 저장한다. Bufferedreader는 Enter만 경계로 인식하고 받은 데이터를 String으로 고정시키기 때문에 후 가공 작업이 필요하다. (Scanner는 입력을 받을 때 Space, Enter를 경계로 인식하기에 입력받은 데이터에 대한 가공이 편리하다.) BufferedWriter 말 그대로 버퍼를 이용하여 출력하는 것이다. Str.. 2022. 2. 11. 이전 1 다음 반응형