본문 바로가기

Language

(58)
[Java]Collection 객체 응용(2) 1. 리스트를 join을 이용하여 문자열로 바꿀때는 stream().collect를 이용하자! private static final List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); 다음과 같은 리스트가 있을때 1-2-3-4-5-6-7...-10 과 같은 문자열을 반환받고 싶다면 일반적으로는 다음과 같다. final StringBuilder stringBuilder1 = new StringBuilder(); final int size = numbers.size(); for (int i = 0; i < size; i++) { stringBuilder1.append(numbers.get(i)); if (i != size - 1) { stringBui..
[Java]Comparable, Comparator 자바스크립트 공부 할 때도 정렬이 서툴렀다. 그래서 헷갈리지 않게 제대로 정리하려고 한다. ...더보기 Comparable - 원래 기준이 있는 정렬 Comparator - 원래 기준이 없어서 새로 기준을 만들어야 하는 정렬 Comparable import java.util.Arrays; public class sorting { public static void main(String[] args) { // TODO Auto-generated method stub Student[] School = { new Student("Tom",90), new Student("Jim",112), new Student("Mije",990), new Student("Ann",390), }; Arrays.sort(Schoo..
[Java]Collection 객체 응용(1) Collection객체가 상당히 크기 때문에, 다 공부할 엄두가 나지 않는다. 하지만 방대한 크기만큼 다양한 문제를 해결할 가능성이 있지 않나 싶다. 그래서 몇 번에 걸쳐 유용한 패턴들을 정리하고자 한다. 1. Collection의 자료구조에 다른 타입들을 넣어야 한다면 DTO객체를 만들자. 다음과 같이 작성하려면 일단 모두 다른 타입이기 때문에 List 앞에 제네릭을 추가해 줄 수 없다. 사실 아무 값도 입력하지 않아도 생성되는 이유는 가 자동으로 붙기 때문이라고 한다. 그 말은 즉슨 위의 값들은 모두 Object가 된다는 의미이다. 이는 원하지 않는 타입변경이 되는데 이는 다음과 같은 오류를 빈번히 발생시킨다. 그렇기 때문에 보통은 DTO객체를 사용한다고 한다. DTO란 계층간 데이터 교환을 위한 J..
[Java] 자바 람다식 람다식이라는 건 결국 자바스크립트의 화살표 함수처럼 익명함수를 쉽게 표현한 방식이다. 처음에는 그냥 사용하면 될지 알았는데 생각해보니 자바는 객체 타입을 미리 정해주지 않으면 안된다. (자바스크립트 같은 경우는 calculator를 할당할 때 function이 된다.) 그렇기 때문에 함수라는 타입의 객체를 생성해주지 않으면 사용할 수 없다. 이것을 위해 FunctionalInterface 라는걸 사용한다. Function이라는 추상 클래스를 생성하게 되면 무엇이 담길 지 정해져 있지 않으므로, Override하는 형식으로 함수를 변수에 담을 수 있기 때문에 이러한 방법을 사용하는 것 같다. 이 때, 인터페이스는 하나 이상의 메소드를 담을 수 없다고 한다. 그렇기 때문에 @FunctionalInterfac..
[Java]모던 자바 ? Java8 Stream을 응용한 리스트 정렬 해당 포스트는 다음 블로그를 참고했습니다. - https://d2.naver.com/helloworld/4911107 요 3주간 자바책을 몇권 읽었는데, 잘 나오지 않는 부분들이 있어서 그것에 대한 정리를 하고 싶어서 글을 쓰려 한다. 만약 Stream에 대해 가물가물하다면 다음 포스팅인 자바 람다식을 잠깐 보고 오면 좋겠다. 위의 코드를 사용할 일이 있었는데, Stream메소드라던지, :: 이라던지 처음보는 것들이 많아서 책을 뒤져다 봤는데 도서관에 책들에서 잘 나오지 않아서 확인해 보니, Java8부터 지원하는 것들이라서 그렇다고 한다. ( 2014년도에 나온 기능이라고 하는데, 그것보다 더 오래된 책들인가 보다.) 그래서 두고 두고 볼 수 없는 부분이라서 오랜만에 글을 쓰기로 했다. 해당 클래스는 ..
[Javascirpt]함수형 자바스크립트 강의 정리(2) 1에서 만든 함수를 가지고 값이나 배열을 받는 개량된 함수를 만든다. map으로 만드는 values 배열 안에 있는 배열, 혹은 객체를 순회하며 모든 값 or 키값을 받아 배열에 담아 리턴한다. function _identity(val) { return val;}var _values = _map(_identity); 해당 코드는 다음과 같은데_identity는 값을 받아 그대로 그 값을 리턴하는 함수이다. 그리고 이 함수를 _map에 파라미터로 넣었다. 일단 이를 이해하기 위해서_map함수를 다시 보자 function _map(list, mapper) { const new_list = []; _each(list, function(val) { new_list.push(mapper(val)); }); ret..
[Javascirpt]함수형 자바스크립트 강의 정리 함수형 자바스크립트 뿐만 아니라자바스크립트 문법에 대해서도 다시 재정립 할 필요를 느꼈다. 함수형 자바스크립트는 true나 false값도 if문이 아니라 함수로 만들어서 완전히 값들을분해하고 조립하는 식으로 짜여진다. function _is_object(obj) { return typeof obj == "object" && !!obj;} 객체인지 확인하는 코드 역시 함수로 만들었다. 자바스크립트에선 배열 역시 object 타입이다. 고로 배열과 객체는 True를 반환함 function _keys(obj) { return _is_object(obj) ? Object.keys(obj) : [];} 다음은 객체의 키를 반환하는 함수이다. 객체 일시 Object.keys메소드를 이용하여 파라미터의 키들을 배열로..
[ES6]Destructuring assignment Destructuring assignment구조 분해 할당이라고 번역 되어진다. 예시를 보자 var colors = ["red", "white", "orange"];var first = colors[0];var second = colors[1];var third = colors[2];console.log(first, second, third); 기존에 배열마다 변수를 선언 하기 위해선 다음과 같은 방식을 이용해야 했다. 이를 es6에서는 var colors = ["red", "white", "orange"];const [first, second, third] = colors;console.log(first, second, third); 이와 같이 사용 될 수 있다. 객체도 구조 분해 할당을 할 수 있다...