일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- aws #아키텍트 #과정 #vpc #인프라 구축 #alb #load balancer #t.g #target #group #haproxy #high ability #db #replica #region
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #replica #복제본 #aurora #database #고가용성
- 썸네일 #이미지
- 비트 #바이트 #이진수
- aws #아키텍트 #과정 #vpc #인프라 구축 #auto scailling #lauch template #ec2 instace #private #subnet
- aws #아키텍트 #과정 #vpc #인프라 구축 #second nat #gateway #routing table #route53 #고가용성 #private subnet #
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #t.g #target group #alb #application #load #balancer #web #server
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #message #queue #sns구독
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #alb #application #load #balancer #security #group #igw #ec2 #vpc #virtual #private #cloud
- 업로드 #lambda #함수 #모바일 이미지 #썸네일 이미지
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 #스토리지 #isci #이미지 #업로드
- aws #아키텍트 #과정 #vpc #인프라 구축 #amazon sns #server #less #architecture
- 쓰레드 #쓰레드풀 #프로세스
- aws #아키텍트 #과정 #vpc #인프라 구축 #aurora #database #rds #rdbs #load #balancer #web #page #haproxy
- 프로세스 #CPU #시공유 #커널
- aws #아키텍트 #과정 #vpc #인프라 구축 #ec2 #instance #launch #template #생성 #ami #amazone #machine #image
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 스토리지 #objects storage #events #upload #알림
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #고가용성 #테스트 #alb #application #load balancer #application
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #trigger #python3.9 #패키지 #
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- aws #아키텍트 #과정 #vpc #인프라 구축
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #round robin #process #high ability #auto scailling #app server #launch template
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #db #장애조치 #reand only #replica #events
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #endpoint #cloudwatch #monitoring
- Today
- Total
요리사에서 IT개발자로
스파르타 코딩클럽 자바문법 2장 배열, 컬렉션정리 본문
//1.배열의 특정값을 대입해서 선언
int[] intArr = {10, 20, 30, 40, 50};
String[] stringArray = {"a", "b", "c", "d"};
// 2. for 문을 통해서 대립
for(int i=0; i<intArr.length; i++){
intArr[i] = i;
System.out.println(intArr[i]);
}
for은 intArr의 배열의 길이만큼 순회할것.
intArr[i]는 i가 순회한 횟수가 intArr[i] 배열의 저장되며
sout으로 i가 intArr[i]의 입력한 횟수를 표시할것이고
intArr[i]의 길이 5개를 , 0부터 시작하여 4까지 총 0, 1, 2, 3, 4 <= 5개가 출력된다.
int[] intArr = {10, 20, 30, 40, 50};
Arrays.fill(intArr, 2);
for(int item: intArr){
System.out.println(item);
}
Arrays.fill = 배열의 모든 값을 초기화.
intArr의 값은 2로
출력하면 10, 20, 30 ,40 ,50 이 2,2,2,2,2 로 출력된것을 확인할 수 있다.
public class Arr03 {
public static void main(String[] args) {
int[] a = {1, 2, 3, 4};
int[] b = a;
b[0] = 3;
System.out.println(a[0]);
}
}
얕은 복사 = 비효율 복사 = 개개인마다 주소값을 할당받아 만들어진 형태가 아니다.
즉 주소값이 이어져있어 a를 변경하든 b를 변경하든 같이 변경되어 출력된게 보여진다.
int[] a = {1, 2, 3, 4};
int[] b = new int[a.length];
for(int i = 0; i<a.length; i++) {
System.out.println(a[i]);
}
i가 a의 배열 길이만큼 순회를 돌면 i는 0, 1, 2, 3을 출력한다.
i를 대괄호 [ ]로 묶어 입력된 길이만큼 a로 바꾸어서 출력을 하게 되었을 때
1, 2, 3, 4가 출력된것을 확인할 수 있다.
int[] a = {1, 2, 3, 4};
int[] b = new int[a.length];
for(int i = 0; i<a.length; i++) {
b[i] = a[i];
System.out.println(a[i]);
}
중간에 b[ i ]는 a [ i ]라는 값을 입력하게되어
a[ i ]의 배열안에 값은 b [ i ]로 채워줌으로 동일 한 값을 입력받는 것. (깊은복사)
//(1)length = 길이
int strLength = str.length();
System.out.println(strLength);
//(2)charAt(int index) = 문자열의 문자를 표시하다
char strChar = str.charAt(1);
System.out.println(strChar);
//(3)substring(int fromIdx, int toIdx) 지하철칸처럼 단위로 배열을 단위로 끊어 시작점과 끝점을 표시한다.
String strSub = str.substring(0,3);
System.out.println(strSub);
//(4) equals(String str) 왼쪽에 있는 값이 오른쪽에 있는 값과 비교할 때 쓰인다
String newStr = "ABCE";
boolean strEqual = newStr.equals(str);
System.out.println(strEqual);
//(5) toCharArray : String => char() char[] 배열의 문자열을 문자로 변경할때 쓰인다.
char[] strCharArray = str.toCharArray();
System.out.println(strCharArray);
//(6)반대로 char[] => String=> char char의 가진 문자들의 배열을 하나의 문자열로 변경한다.
char[] charArray = {'A', 'B', 'C'};
String charArrayString = new String(charArray);
System.out.println(charArrayString);
컬렉션의 기능으로는
크기 자동조정/ 추가/ 수정/ 삭제 /반복/ 순회 /필터/ 포함확인 등등 이 있다.
컬렉션은 기본형변수를 저장하지않고 참조형변수를 저장한다.
intList.add(99);
intList.add(15);
intList.add(3);
System.out.println(intList.get(0));
//삭제
intList.remove(0);
System.out.println(intList.get(0));
intList에 0번째는 99, 1번쨰는 15, 2번째는 3이라는 값을 저장하고
출력을 할 경우 0번째는 99가 출력된다, 허나 remove함수를 사용하여 0번째 값을 삭제를 하면 데이터 자체가 사라져
다음인 15가 출력된다.
linkedList는 조회하는 속도가 느리지만 값을 추가하거나 삭제할 때는 빠르다.
package collection;
import java.util.LinkedList;
public class Col2 {
public static void main(String[] args) {
//linked list
//메모리에 남는 공간을 요청해서 여기 저기 나누어서 실제 값을 담아놓는다.
// 실제값이 있는 주소값으로 목록을 구성하고 저장하는 자료구조이다.
// 기본적 기능 => ArrayList와 동일하다
//LinkedList 값을 => 여기저기 나누어서 : 조회하는 속도가 느리다.
// 값을 추가하거나, 삭제할 때 는 속도가 빠르다.
LinkedList<Integer>linkedList = new LinkedList<Integer>();
linkedList.add(5);
linkedList.add(10);
linkedList.add(3);
System.out.println(linkedList.get(0));
System.out.println(linkedList.get(1));
System.out.println(linkedList.get(2));
System.out.println(linkedList.toString()); //
linkedList.add(200);
System.out.println(linkedList.toString()); //
linkedList.add(2, 4);
System.out.println(linkedList.toString()); //
linkedList.set(1, 30);
System.out.println(linkedList.toString());
linkedList.remove(1);
System.out.println(linkedList.toString());
linkedList.clear();
System.out.println(linkedList.toString());
}
}
Stack의 사용이유
FILO, 최근저장된 데이터를 나열하거나 데이터의 중복처리를 막고싶을 때
FILO
처음에 넣었던 자료가 점점 쌓인다.
그러면 Last가 되어 출력할 때 먼저 출력이 된다.
push 추가하다,
pop 맨 마지막에 저장된 값을 출력하고 데이터를 없앤다.
peak 제일 처음에 저장된 값을 출력.
size 배열안의 크기를 조회한다.
package collection;
import java.util.Stack;
public class Col3 {
public static void main(String[] args) {
//Stack
//수직으로 값을 쌓아놓고 넣었다가 뺀다. FILO(Basket)
//push, peek, pop
// 최근 저장된 데이터를 나열하고싶거나 데이터의 중복처리를 막고싶을 때 사용한다.
Stack<Integer>intStack = new Stack<Integer>(); //선언 및 생성
intStack.push(10);
intStack.push(15);
intStack.push(1);
// 다 지워질 때 까지 출력
while(!intStack.isEmpty()) {
System.out.println(intStack.pop()); //상단에 있는 값을 출력하고 빼준다
}
//다시한번 추가
intStack.push(10);
intStack.push(15);
intStack.push(1);
//peek
System.out.println(intStack.peek());
System.out.println(intStack.size());
}
}
Queue
FIFO (마지막에 넣은 자료를 먼저 출력한다)
생성자가 없는 인터페이스.
poll 선택해서 출력한다
peak 제일 최근에 저장된 값을 출력.
size 배열안의 크기를 조회한다.
package collection;
import java.util.LinkedList;
import java.util.Queue;
public class Col4 {
public static void main(String[] args) {
//Queue : FIFO
// add, peek, poll
// Queue : 생성자가 없는 인터페이스 =
Queue<Integer> intQueue = new LinkedList<>(); //Queue를 선언하고 생성
intQueue.add(1);
intQueue.add(3);
intQueue.add(5);
while(!intQueue.isEmpty()){
System.out.println(intQueue.poll()); // isEmpty() => intQeue에 저장된 배열이 비어있지 않으면 순회하며 출력해라
}
intQueue.add(1);
intQueue.add(3);
intQueue.add(5);
intQueue.add(10);
//peek
System.out.println(intQueue.peek()); //1 이 출력
System.out.println(intQueue.size()); //4 출력
}
}
set은 집합과 비슷하다
순서가 보장되지 않는 대신 중복데이터를 허용하지 않는다.
HashSet과 TreeSet을 응용할 수 있다.
생성자가 없는 인터페이스라 HashSet 또는 TreeSet을 사용해서 생성할 수 있다.
package collection;
import java.util.HashSet;
import java.util.Set;
public class Col5 {
public static void main(String[] args) {
//Set(집합) : 순서없고, 중복없다
//순서가 성장되지 않는 대신 중복을 허용하지 않도록 하는 프로그램에서 사용할 수 있는 자료구조
//Set => 바로 사용할 수 있다. 그러나 HashSet, TreeSet 등으로 응용해서 같이 사용가능하다.
//Set은 생성자가 없는 껍데기라 바로 생성 할 수 없다.
//생성자가 존재하는 HashSet을 이용하여 -> Set을 구현해 볼 수 있다.
Set<Integer> intSet = new HashSet<>(); //선언 밑 생성
intSet.add(1);
intSet.add(12);
intSet.add(5);
intSet.add(9);
intSet.add(1);
intSet.add(12);
for(Integer value:intSet){
System.out.println(value); //1,5,9,12 만 출력 중복되는 값들은 출력X
}
// contains : 포함하는지를 뜻한다.
// true와 false로 출력한다
System.out.println(intSet.contains(2)); //전체 변수의 종류가 3이 아님 false
System.out.println(intSet.contains(5)); //전체 변수의 종류가 6이 맞음 true
}
}
Map은 key와 value가 한쌍이다.
Map은 HashSet과 TreeSet을 응용해서 사용이 가능하다.
put 은 세팅하다.
get은 가져오다.
package collection;
import java.util.HashMap;
import java.util.Map;
public class Col6 {
public static void main(String[] args) {
// Map : key => value pair => 중요하다.
//keyvalue 값으로 uique하게 보장이 되야한다.
// Map => HashSet, Treeset으로 응용된다.
Map<String, Integer> intMap = new HashMap<>();
// 키 값
intMap.put("일", 11);
intMap.put("이", 12);
intMap.put("삼", 13);
intMap.put("삼", 14); //중복 key
intMap.put("삼", 15); //중복 key
intMap.put("삼", 16); //중복 key
//key 값 검색 출력(향상된 for문)
for(String key:intMap.keySet()){
System.out.println(key); //중복은 출력X, 키값출력 순서를 보장하지 않는다.
}
// value 값 전체 출력(향상된 for문)
for(Integer value: intMap.values()){
System.out.println(value); //키 값을 출력, 중복되는 값을 높은값을 출력한다.
}
System.out.println(intMap.get("삼")); //삼중에 높은값을 출력 중복 허용하지않는다
}
}
숙제
Queue는 FIFO
생성자가 없는 인터페이스여서 ArrayList와 동일한 LinkedList 생성자를 사용하여 선언 및생성
add으로 추가하고
while문을 사용하여 isEmpty <= 비어있는 값을 출력
에 ! <= 사용하여 반대로 비어있지 않은 값을 출력 함으로 써
결론
Queue방식의 데이터 출력 (FIFO)
LinkedList의 동적배열을 사용 (데이터가 가변적으로 늘어나도 상관없다. 추가가 가능하다)
마지막으로 while문에 isEmpty () 를 사용하고 !를 활용하여 비어있는 값에서 멈추도록 만들었다.
package collection;
import java.util.LinkedList;
import java.util.Queue;
public class Col7 {
public static void main(String[] args) {
Queue<String> strQueue = new LinkedList<>();
strQueue.add("[ Queue로 저장된, 알리오 올리오 만들기 ]");
strQueue.add("면을 삶는다.");
strQueue.add("팬에 기름을 두른다");
strQueue.add("마늘을 갈색나게 익힌다.");
strQueue.add("팬에 면수를 넣는다.");
strQueue.add("팬에 파스타 면을 넣는다");
strQueue.add("조미료를 넣어 간을 맞춘다");
strQueue.add("졸인다.");
strQueue.add("면을 돌돌말아 그릇에 세팅한다.");
strQueue.add("파슬리와 후추를 뿌린다.");
strQueue.add("끝");
while(!strQueue.isEmpty()){
System.out.println(strQueue.poll()); // isEmpty() => strList에 저장된 배열이 비어있지 않으면 순회하며 출력해라
}
}
}
'Java' 카테고리의 다른 글
스파르타 코딩클럽 부트캠프 (Java 문법 4장) (1) | 2024.05.02 |
---|---|
스파르타 코딩클럽 부트캠프 (Java 문법 3장) (0) | 2024.04.29 |
스파르타 코딩클럽 부트캠프 (Java 문법 2장) (0) | 2024.04.24 |
스파르타 코딩클럽 부트캠프 (Java 문법 1장) (2) | 2024.04.22 |
Eclipse 단축키 정리(with 자바의 정석) (0) | 2024.04.18 |