전체 글 114

스트림(Stream)

스트림(Stream) (자바io스트림과는 다르다. 자료 연산을 위한 객체) - 자료의 대상과 관계없이 동일한 연산을 수행할 수 있는 기능(자료의 추상화) - 배열, 컬렉션에 동일한 연산이 수행되어 일관성 있는 처리 가능 - 한번 생성하고 사용한 스트림은 재사용할 수 없음 - 스트림 연산은 기존 자료를 변경하지 않음 - 중간연산과 최종 연산으로 구분 됨 - 최종연산이 수행되어야 모든 연산이 적용되는 지연연산 중간연산 - filter(),map() 조건에 맞는 요소를 추출(filter())하거나 요소를 변환함(map()) 문자열의 길이가 5이상인 요소만 출력하기(filter) sList.stream().filter(s->s.length()>=5).forEach(s->System.out.println(s));..

JAVA 2019.10.15

람다식

람다식 - 자바에서 함수형 프로그래밍(functional programming)을 구현하는 방식 - 클래스를 생성하지 않고 함수의 호출만으로 기능을 수행 - 함수형 인터페이스를 선언함 - 자바 8부터 지원되는 기능 - 함수형 프로그래밍을 사용 함으로서 병렬 처리가 가능하다. 함수형 프로그래밍 - 순수 함수(pure function)를 구현하고 호출 - 매개 변수만을 사용하도록 만든 함수로 외부자료에 부수적인 영향(side effect)가 발생하지 않도록함 - 입력받은 자료를 기반으로 수행되고 외부에 영향을 미치지 않으므로 병렬처리등에 가능 - 안정적인 확장성 있는 프로그래밍 방식 람다식 문법 - 매개 변수 하나인 경우 괄호 생략가능(두 개인경우는 괄호를 생략할 수 없음) str->{System.out.p..

JAVA 2019.10.14

내부클래스

클래스 내부에 구현한 클래스( 중첩된 클래스 ) 클래스 내부에서 사용하기 위해 선언하고 구현하는 클래스 주로 외부 클래스 생성자에서 내부 클래스를 생성 내부클래스 유형 Code package innerclass; class OutClass{ //인스턴스 내부 클래스 //멤버변수를 선언하는 부분 private int num=10; private static int sNum=20; private InClass inClass; //인너 클래스 생성시기 //아웃클래스의 콘스트럭트에서 많이 생성 public OutClass() { inClass = new InClass(); } class InClass{ int iNum = 100; //사용불가 //static int sInNum = 200; void inTest..

JAVA 2019.10.13

Map인터페이스

컬렉션 프레임 워크 Map 인터페이스 - 쌍으로 이루어진 자료구조 (key , value) - 키는 유일한 값이어야한다. - ex) 파이썬의 경우에는 딕셔너리 - key-value pair의 객체를 관리하는데 필요한 메서드가 정의됨 - key는 중복 될 수 없음 - 검색을 위한 자료구조 - key를 이용하여 값을 저장하거나 검색,삭제 할때 사용하면 편리함 내부적으로 hash방식으로 구현됨 - Map에 값을 전체 출력하기 위해서는 entrySet(), keySet() 메소드를 사용 entrySet() 메서드는 key와 value의 값이 모두 필요한 경우 사용하고 keySet()메서드는 key의 값만 필요한 경우 사용한다. index = hash(key)// index는 저장위치 - key가 되는 객체는 객..

JAVA 2019.10.12

Comparable 인터페이스와 Comparator 인터페이스

Comparable 인터페이스와 Comparator 인터페이스 - 정렬 대상이 되는 클래스가 구현해야하는 인터페이스 - Comparable은 compareTo() 메서드를 구현 매개변수와 객체 자신(this)를 비교 - Comparator는 compare() 메서드를 구현 두개의 매개 변수를 비교 TreeSet 생성자에 Comparator가 구현된 객체를 매개변수로 전달 TreeSet treeSet = new TreeSet(new Member()); - 일반적으로 Comparable을 더 많이 사용 - 이미 Comparable이 구현된 경우 Comparator를 이용하여 다른 정렬 방식을 정의 할 수 있다. ============ Member class ============ package treeset..

JAVA 2019.10.11

set 인터페이스

Iterator로 순회하기 Collection의 개체를 순회하는 인터페이스 -iterator() 메서드 호출 Iterator ir = memberArrayList.iterator(); -List는 순서기반의 인터페이스이지만, Set은 순서가 없음( 실행시에 계속해서 순서가 바뀜) -get(i)메서드가 제공되지 않아서 Iterator를 사용해서 순회하여 검색해야한다. -저장된 순서와 출력순서가 다를 수 있음 -아이디와 주민번호 사번 등 유일한 값이나 객체를 관리할 때 사용 -HashSet, TreeSet 클래스 Iterator 에 선언된 메서드 메서드 설명 boolean hasNext() 이후에 요소가 더 있는지 체크하는 메서드이며, 요소가 더 있다면 true를 반환합니다. E next() 다음에 있는 요..

JAVA 2019.10.10

Stack과 Queue

ArrayList를 stack과 queue 구현하기 - Stack(Last In First Out(FIFO): 맨 마지막에 추가 된 요소가 가장 먼저 꺼내지는 자료구조 - 이미구현된 클래스가 제공됨 - ArrayList, LinkedList로 구현할 수 있음 - 게임에서 무르기, 최근자료 가져오기 등의 구현에 사용 Queue 구현하기 - First In First Out(FIFO) : 먼저 저장된 자료가 먼저 꺼내지는 자료구조 - 선착순, 대기열등을 구현할 때 가장 많이 사용되는 자료 구조 - ArrayList나 LinkedList 로 구현 할 수 있음 package collection; import java.util.ArrayList; class MyStack { private ArrayList arr..

JAVA 2019.10.09

List 인터페이스

List 인터페이스 Collection 하위 인터페이스 - 객체를 순서에 따라 저장하고 관리하는데 필요한 메서드가 선언된 인터페이스 - 배열의 기능을 구현하기 위한 메서드가 선언됨 Ex) ArrayList,Vector,LinkedList ArrayList 와 Vector (객체 배열클래스) Vector 는 자바 2부터 제공된 클래스, 보편적으로는 ArrayList를 더 많이 사용 Vector은 멀티 쓰레드 프로그램에서 동기화를 지원 ->동기화(Synchronization) 두개의 쓰레드가 동시에 하나의 리소스에 접근 할 때 순서를 맞추어서 데이터의 오류가 방지하지 않도록 함 capacity 와 size는 다른 의미 ArrayList 와 LinkedList - 둘다 자료의 순차적 구조를 구현한 클래스 - ..

JAVA 2019.10.08

제네릭

-제네릭 프로그래밍이란 -변수의 선언이나 메서드의 매개변수를 하나의 참조 자료형이 아닌 여러 자료형을 변환 될 수 있도록 프로그래밍 방식 -실제 사용되는 참조 자료형으로의 변환은 컴파일러가 검증하므로 안정적으로 프로그래밍을 할 수 있다는 장점이 있다. - 자바에서 사용햐는 여러가지 라이브러리를 구현 해놓은 것들의 집합체 - 컬렉션 프레임워크를 이해하는데 도움이 된다. - 자바 프로그램이 5버전부터 나온 프로그래밍 여러 참조형으로 대체 될 수 있는 부분을 하나의 문자로 표현 -ex GenericPrinter 제네릭 클래스 public class GenericPrinter{ private T material; public void setMaterial(T material){ this.material=mate..

JAVA 2019.10.07