본문 바로가기

자바/정리

(28)
(JAVA) 스트림 우리는 컬렉션을 사용하면서 List, Set, Map 을 알아보았다. 컬렉션은 프레임워크이며, 프레임워크는 표준화를 위해 사용하는데 아쉽게도 List, Set, Map의 사용법이 각자 달라서 표준화라고 하기에는 무리가 있었다. 그걸 해결하기 위해 스트림을 사용할수 있는데 스트림(Stream) 하면 뭐가 떠로르는가? 그렇다, 개울, 시내 같이 물이 흐르는것들이 떠오를 것이다. 스트림은 흐름이다. 데이터의 흐름. 우선 개념을 느끼고 가자. List, Set, Map,배열 같은 것들을 스트림에 맡기면 스트림은 편견없이 우리가 원하는데로 처리해 준다. 이게 무슨 말일까? 스트림은 데이터의 본질을 변경하지 않는다 단지 읽기만 하는데 이런 특성때문에 내가 어떤 유형을 사용하던 스트림에서는 공평?하게 처리할수가 있다..
(Java) Iterator 지금까지 컬랙션의 대표적인 기능들인 List, Set, Map에 대하여 알아보았다. 이들은 각자 사용되는 메서드들도 다르고 자료를 저장하는 형태도 다르다. List에는 get이라는 메서드를 사용하여 값들을 출력할수가 있는데 Set에서는 지원하지 않기에 사용이 불가능하다. Iterator를 사용해 주면 코드의 변경없이 List에서 Set으로 변경이 가능하다. 간단한 예제를 한번 살펴보자. public class Main { public static void main(String[] args) { List groupA = new ArrayList(); groupA.add("orange"); groupA.add("banana"); groupA.add("apple"); groupA.add("melon"); gr..
(JAVA)HashMap,TreeMap 컬렉션의 전반적인 설명은 아래 링크를 참고하자. https://acid7937.tistory.com/37 먼저 Set과 List, Map은 전부 돌아가는 방식이 비슷하다. 개인적인 생각으로 이 글을 안봐도 Map을 이해하는데 문제가 없다고 생각한다. Set 설명 https://acid7937.tistory.com/42 List 설명 https://acid7937.tistory.com/39 이번에는 Map을 알아볼 것이다. Map은 순서는 없고 키중복은 안되고 값 중복은 가능하다. 순서X 키중복X 값중복 O 회원가입할때가 대표적으로 Map이 사용될때 라고 언급하였었다. 혹은 제품명과 수량 같은곳에서도 사용할수 있겠다. Set과 List를 봤다면 Map도 사용법이 거의 동일한것을 알수 있을것이다. 코드로 살..
(JAVA)HashSet, TreeSet 컬렉션의 전반적인 설명은 아래 링크를 참고하자. https://acid7937.tistory.com/37 이번에는 Set을 알아볼 것이다. Set은 순서가 없고 중복도 없다고 설명하였다. 순서 X 중복 X 이러한 특징을 가진게 주머니 혹은 가방(즉.. 이것은 집합이다) 라고 하였다. 개발하다가 집합과 관련되면 Set을 떠올리면 된다. 왼쪽 가방에는 사과, 바나나, 멜론이 있고 오른쪽 가방에는 사과, 수박, 복숭아가 있다면 교집합은 사과 합집합은 사과 바나나 멜론 수박 복숭아 왼쪽 - 오른쪽 차집합은 바나나 멜론 이 될것이다. 이것들은 Set을 사용하면 할수 있는 것이다. 먼저 Set이 어떻게 돌아가는지 코드를 통해 알아보자. HashSet 앞서 사과 바나나 멜론이 한 가방에 있는것을 상상해 보았다. St..
(JAVA) ArrayList, LinkedList 컬렉션의 전반적인 설명은 아래 링크를 참고하자. https://acid7937.tistory.com/37 다들 배열을 기억할 것이다. 배열의 규칙에 대해 다들 잘 알겠지만. 예시로 숫자 5개를 입력하고 싶을때. int[] arr = {1,2,3,4,5}; for (int number : arr) { System.out.print(number + "\t"); } 뭐... 이렇게 5개를 사전에 입력해서 사용해도 괜찮지만. 내가 프로그램 실행해서 직접 입력하고 싶다면? 여기서 뭘 어떻게 할것인가? 이것말고 new 써서 초기화한뒤 배열 크기 지정 하는걸 알 것이다. Scanner scan = new Scanner(System.in); int count=1; int[] arr1 = new int[5]; for(i..
(JAVA)Collection Framework 컬렉션(Collection)이 뭘까. 수집이라는 뜻이 있다는걸 알것이다. 자바에서 컬렉션은 여러 데이터(객체) 들을 모아 놓은 것을 말한다. 프레임워크(Framework)는? 어려운 개념일수는 있다. 프레임은 "틀" 이라는 뜻이 있다. 즉, 틀을 정해서 작업하는 것이다. 뭔소리일까. 프레임워크는 개발자가 코드를 짤때 규칙들을 정해준다. 이거할때는 이걸 지켜야된다 같은것들 말이다. (안드로이드 핸드폰을 만들때는 하단에 USB-C 타입을 넣어야해.) 과거에는 사람들이 자기들 마음대로 규칙없이 프로그램 설계를 하다 보니 다른 사람이 이어서 개발,유지보수 할때는 가독성이 지옥이였다고 한다. 그래서 선배 개발자들이 프레임워크 라는 것을 도입하여 이 기능 쓰고 싶으면 여기에다 넣어 혹은 이 기능 쓰고 싶으면 이것도..
(JAVA)제네릭 이번에는 제네릭 이라는 중요한 기능을 알아볼 것이다. 제네릭은 다음에 게시할 컬렉션에서 중요하게 다루는 핵심 기능이다. 설명하기에 앞서 제네릭의 장점을 설명하자면. 1.코드의 중복을 줄일수가 있다. 2.타입의 안전성을 확보하고 오류를 방지한다. 이렇게 2가지가 있는데 이해는 안가겠지만 장점을 계속 기억하며 아래 글을 읽어보자.(결국 다 이야기 할꺼임) 1. 코드의 중복을 줄일수가 있다. 제네릭 사전에 검색하면 포괄적인 이라는 뜻을 보여준다. 뭘 포괄 한다는 것일까. 바늘이 있다. 바늘은 한의사가 침을 놓을때 쓸수도 있고 아니면 옷을 수선 할때 사용할수도 있다. 바늘의 사용법을 사용자의 목적에 맞게 사용자가 스스로 정의 할수 있는 것이다. 우리는 어떠한 값을 넣을때 타입이 중요하다는 것을 잘 알고 있다. ..
(JAVA) Object 클래스 toSting(), hashcode() 다음으로 toString을 살펴보겠다. toSting()은 객체를 문자열로 변환을 시켜주는 메서드 이다. 보통 개발자들은 toString을 사용하여 객체가 무슨 값을 가지고 있는지 직접 확인하는 용도로 사용을 한다. 바로 살펴보자. class dog { String crying; int number; dog(String crying, int number) { this.crying = crying; this.number = number; } public boolean equals(Object obj){ dog d = (dog)obj; return this.crying == d.crying; } } class Main { public static void main(String[] args) { dog poo..