타임어택을 생각보다 괜찮게 마무리 했다 3문제를 풀었고 한문제는 뼈대만 대충 만들었는데 나중에 팀원들과 서로 작성한 코드들을 공유했는데 다양하게 푼 문제들도 있고 뼈대를 만든 것도 괜찮은 방향으로 만든 것을 확인할 수 있었다. 스스로 찾아보면서 코드를 작성하니 정말 간단한 코드도 망설이면서 작성하게되었다. 앞으로 프로그래머스나 백준 문제를 꾸준히 풀어야 겠다는 필요성을 느낀다.
1-21.컬렉션- 개념설명
*컬렉션
: JAVA에서 자료구조를 표현하는 인터페이스(-리스트, 스택, 큐, 셋, 맵이 구현하고 있다..)
*컬렉션 프레임워크
: 다수의 데이터를 다루기 위한 자료구조를 표현하고 사용하는 클래스
-List : 순서가 있는 데이터 짐합, 데이터 중복 허용
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> integerList = new ArrayList<>();
integerList.add(1);
integerList.add(5);
integerList.add(4);
integerList.add(11);
integerList.add(10);
System.out.println(integerList);
Collections.sort(integerList); //integerList를 순차적으로 정렬해줌. 따로 정하지 않으면 올림차순.
System.out.println(integerList);
System.out.println(integerList.size()); //element 개수만큼 size출력
integerList.remove(4); //4번째 자리의 index를 제거
System.out.println(integerList);
for(int i = 0; i < integerList.size(); i++) {
System.out.println(integerList.get(i)); //index 0부터 i 까지 해당하는 값을 구할 수 있다.
}
for(int current : integerList){
System.out.println(current); //위와 똑같은 결과
}
}
}
-Set : 순서를 유지하지 않는 데이터의 집합, 데이터 중복 허용X
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Integer> integerSet = new HashSet<>();
integerSet.add(1);
integerSet.add(1);
integerSet.add(3);
integerSet.add(2);
integerSet.add(9);
integerSet.add(8);
System.out.println(integerSet);
Set<String>stringSet = new HashSet<>();
stringSet.add("LA");
stringSet.add("New York");
stringSet.add("LasVegas");
stringSet.add("San Francisco");
stringSet.add("Seoul");
System.out.println(stringSet);
stringSet.remove("Seoul");
System.out.println(stringSet);
List<String> target = new ArrayList<>();
target.add("New York");
target.add("LasVegas");
stringSet.removeAll(target);
System.out.println(stringSet);
System.out.println("LA 포함되어있나요?" + stringSet.contains("LA"));
System.out.println("Seoul 포함되어있나요?" + stringSet.contains("Seoul"));
System.out.println(stringSet.size());
stringSet.clear();
System.out.println(stringSet);
}
}
-Map : 키(key)와 값(value)의 쌍으로 이루어진 데이터 집합, 순서 유지X, 키는 중복 -> HashMap, TreeMap 등
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(1, "apple"); //map은 add 대신 put을 사용한다.
map.put(2, "berry");
map.put(3, "cherry");
System.out.println(map);
System.out.println("1st in map: " + map.get(0)); //get은 key값을 받아서 value가 나오는 함수. key값을 안 넣어 줬기 때문에 null값이 나온다.
System.out.println("1st in map: " + map.get(1));
map.remove(2); //index값을 지우는 것이 아니라 key를 자운다.
System.out.println(map);
System.out.println(map.containsKey(2)); //key가 있는지 확인
System.out.println(map.containsValue("cherry")); //value가 있는지 확인
map.clear();
System.out.println(map);
}
}
-Stack : 마지막에 넣은 데이터를 먼저 꺼내는 자료구조.(LIFO-last in first out)
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(3);
stack.push(7);
stack.push(5);
System.out.println(stack);
System.out.println(stack.peek()); //마지막에 넣었던 5가 출력, 완전히 꺼내지는 않고 보기만...
System.out.println("size: " + stack.size()); //4
System.out.println(stack.pop()); //마지막에 넣었던 5가 출력, 완전히 꺼내면서 return
System.out.println("size: " + stack.size()); //3
System.out.println(stack.contains(1)); //true
System.out.println(stack.empty()); //false
stack.clear();
System.out.println(stack.isEmpty()); //true
}
}
-Queue : 먼저 넣은 데이터를 먼저 꺼내는 자료구조.(FIFO-first in first out)
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
queue.add(3);
System.out.println(queue);
System.out.println(queue.poll()); //poll : 앞에 있는 것을 빼내면서 리턴하겠다.
System.out.println(queue);
System.out.println(queue.peek());
System.out.println(queue);
}
}
-ArrayDeque : 기본 stack, queue 기능을 모두 포함하면서도 성능이 더 좋기 때문에 실무에서 많이 사용
import java.util.ArrayDeque;
public class Main {
public static void main(String[] args) {
ArrayDeque<Integer> arrayDeque = new ArrayDeque<>();
arrayDeque.addFirst(1);
arrayDeque.addFirst(2);
arrayDeque.addFirst(3);
arrayDeque.addFirst(4);
System.out.println(arrayDeque); //계속 앞자리로 넣으니까 맨처음에 앞자리로 넣었던 건 뒤로 밀려나게 됨
arrayDeque.addLast(0); // 마지막에 추가됨
System.out.println(arrayDeque);
arrayDeque.offerFirst(10); //addFirst와 비슷하지만 큐의 크기에 문제가 생길때 offerFirst는 false를 리턴하고 addFirst는 exception이 나온다.
System.out.println(arrayDeque);
arrayDeque.offerLast(-1);
System.out.println(arrayDeque);
arrayDeque.push(22);
System.out.println(arrayDeque);
System.out.println(arrayDeque.pop()); //stack 의 기능도 제공
System.out.println(arrayDeque);
System.out.println(arrayDeque.peek());
System.out.println(arrayDeque);
System.out.println(arrayDeque.size());
arrayDeque.clear();
System.out.println(arrayDeque.isEmpty());
}
}
1-24.제네릭스
:다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능, 객체의 타입을 컴파일 시 체크하기 때문에 안정성이 높아진다.
public class 클래스명<T> {...}
public interface 인터페이스명<T> {...}
--->꺽쇠 알파벳
1-25.람다
:식별자 없이 실행 가능한 함수, 함수의 이름을 따로 정의하지 않아도 곧바로 함수처럼 사용할 수 있다, 문법 간결
재사용 불가, 비슷한 메소드를 중복되게 생성할 가능성이 있어 지저분해질 가능성
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Korea");
list.add("Japan");
list.add("France");
Stream<String> stream = list.stream();
stream.map(str->str.toUpperCase()) //map: 앞에 있었던 값을 어떤 값으로 바꿀게 , toUpperCase(): 대문자로 출력해줌
.forEach(it->System.out.println(it));
}
}
1-26.스트림
:데이터의 흐름, 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자,
데이터 소스 변경X, 작업을 내부적으로 반복 처리, 재사용불가능-필요할 경우 재생성을 해야함
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("서울");
list.add("부산");
list.add("대구");
list.add("서울");
System.out.println(list);
List<String> result = list.stream() //구조 : stream-> transformation ->result
.limit(2) //앞에 있는 두 개만 남기고 나머지를 지움
.collect(Collectors.toList()); //이렇게 스트림 처리된 것을 나중에 하나로 모을건데
System.out.println(result);
System.out.println("list -> transformation -> set");
Set<String> set = list.stream() //list에 있는 데이터를 하났기 꺼내서
.filter("서울"::equals) //서울이랑 글자가 같은지 보고 같은 거만 남길거야
.collect(Collectors.toSet()); //그리고 이것을 set의 자료구조로 바꿔서 모아 줄 거야
System.out.println(set);
}
}
1-27.스트림 퀴즈
1-28.네트워킹-Retrofit, Open API
*네트워킹 : 두 대 이상의 컴퓨터를 케이블 또는 인터넷으로 연결하여 네트워크를 구성하는 것
-클라이언트 : 서비스를 사용하게 되는 컴퓨터, 요청을 하는 컴퓨터/ 서버: 서비스를 제공하는 컴퓨터, 요청에 응답하는 컴퓨터
-IP 주소 : 컴퓨터를 구별하는데 사용되는 고유한 값으로 인터넷에 연결이 되어있는 모든 컴퓨터는 IP 주소를 갖는다.
- URL: 인터넷에 존재하는 여러 서버들이 제공하는 자원에 접근할 수 있는 주소를 표현하기 위한 것
-포트번호: 통신에 사용되는 서버의 포트번호
-API : 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어 할 수 있게 해주는 인터페이스
*Retrofit : 각종 에러처리를 쉽게 해결할 수 있으며 원시적인 방법에 비해 가독성 훌륭
'스파르타 부트캠프(spring)' 카테고리의 다른 글
[내일배움캠프_spring] 3주차_JAVA 복습, CS강의 (1) | 2022.11.21 |
---|---|
[내일배움캠프_spring] 3주차_알고리즘(~3-9) (0) | 2022.11.17 |
[내일배움캠프_spring] 3주차_JAVA 문법(~1-20강) (0) | 2022.11.15 |
[내일배움캠프_spring] 3주차_JAVA 문법(~1-14강) (0) | 2022.11.14 |
[내일배움캠프_spring] 주간회고 WIL - 2주차 (1) | 2022.11.14 |