https://tosuccess.tistory.com/145
https://devlogofchris.tistory.com/
2주차 강의 목록
- 비교,논리,대입,기타,비트 연산자
- 조건문, 반복문, 배열
- 다차원 배열
- 컬랙션 List 부터
- 컬렉션 Stack, Queue, Set, Map
6조 팀원분 정리본 복붙
String 배열
#메서드 종류
- length() : 문자열 길이 반환
- charAt(int index) : 문자열에서 해당 index의 문자를 반환
- substring(0, 3) : 문자열을 0에서 2까지만 반환
- equals(String str) : 문자열변수끼리 같은지 비교
- toCharArray() : 문자열을 문자배열로 변환
- new String(char[] arr) : 문자배열을 String으로 반환
다차원 배열
- 방법 예시) int[][] array = new int[][]; // 대괄호를 1개 더 사용
컬렉션
- 배열보다 다수의 참조형 데이터를 더 쉽고 효과적으로 처리할 수 있음
- 크기 자동조정, 추가, 수정, 삭제, 반복, 순회, 필터, 포함확인 등
List
1. Array
- 정적배열
2. List(ArrayList) : ArrayList<데이터 타입> 변수명 = new ArrayList<데이터 타입>();
- 동적배열(크기가 가변적으로 늘어남)
3. linked list
- 메모리에 남는 공간을 요청해서 여기저기 나누어서 실제 값을 담음
- 실제 값이 있는 주소값으로 목록을 구성하고 저장
- 속도가 느림
※ 메서드
- .get(가져오려는 값 위치)
- .set(변경하려는 값 위치, 변경할 값)
- .remove(삭제할 위치) : 삭제 후 한 칸씩 당겨짐
- .clear() : 전체삭제
의문점 : linkedlist랑 arraylist 둘 중에 하나를 택해서 사용해야될 특정 상황이 있는가?
4. Stack
#수직으로 값을 쌓고 싶을때
#메소드
- push(값)-입력
- pop()-마지막에 입력된 값부터 출력,
- isEmpty()-값이 있으면 true 있으면 false
- peek()-마지막에 입력된 값 조회
5. Queue(FIFO) First in First out
- Queue<데이터 타입> 변수명 = new LinkedList<>(); // 생성자 없음
6. Set
#순서가 보장되지 않는 대신 중복을 허용하지 않도록 하는 프로그램에서 사용
#바로 사용 가능, 하지만 hashset, treeset 등으로 응용해서 같이 사용
- HashSet : 중복된 요소 저장x 순서 유지 x
- TreeSet : 중복된 요소 저장x, 순서 유지x, 오름차순 정렬o
- LinkedHashSet : 중복된 요소 저장x, 순서 유지 o
#Set은 생성자가 없음
#생성자가 존재하는 HashSet을 이용
#.contains(값) : 내가 찾고자 하는 값을 Set 목록에서 찾기
7. Map(key - value)
#HashMap<데이터 타입, 데이터 타입> 변수명 = new HashMap<>();
#키값이 중복되면 안됨
#HashMap, TreeMap 생성자를 같이 사용
#변수명.put(key, value) : 해당 키값으로 value 저장
#변수명.keySet() : Map에 저장되있는 key값을 불러옴
#변수명.values() : Map에 저장되있는 value값을 불러옴
자바 2주차 강의 과제, 나도 if문 말고 스위치 문으로 초반 3개 고르기 코드 수정해봐야겟다
package chapter02;
import java.util.*;
public class SecondHomework {
public static void main(String[] args) {
/*
자바 강의 2주차 과제
자료구조 요리 레시피 메모장 만들기
입력값
저장할 자료구조명을 입력합니다. (List / Set / Map)
내가 좋아하는 요리 제목을 먼저 입력합니다.
이어서 내가 좋아하는 요리 레시피를 한 문장씩 입력합니다.
입력을 마쳤으면 마지막에 “끝” 문자를 입력합니다.
출력값
입력이 종료되면 저장한 자료구조 이름과 요리 제목을 괄호로 감싸서 먼저 출력해 줍니다.
이어서, 입력한 모든 문장 앞에 번호를 붙여서 입력 순서에 맞게 모두 출력해 줍니다.
*/
Scanner scanner = new Scanner(System.in);
System.out.print("저장할 자료구조명을 입력합니다. (List / Set / Map 이용하기): ");
String dataStructure = scanner.nextLine().trim();
// 사용자가 선택한 자료구조에 따라 적절한 객체를 생성합니다.
// 변수 선언
Object dataStructureInstance;
if (dataStructure.equalsIgnoreCase("List")) {
dataStructureInstance = new ArrayList<String>();
} else if (dataStructure.equalsIgnoreCase("Set")) {
dataStructureInstance = new HashSet<String>();
} else if (dataStructure.equalsIgnoreCase("Map")) {
dataStructureInstance = new LinkedHashMap<Integer, String>();
} else {
System.out.println("지원하지 않는 자료구조입니다.");
scanner.close();
return;
}
// 요리 제목을 입력받습니다.
System.out.print("내가 좋아하는 요리 제목을 입력합니다: ");
String title = scanner.nextLine().trim(); // trim 이란? 공백을 제거한 입력값을 title 변수에 저장합니다.
// 사용자가 좋아하는 요리 레시피를 입력받습니다.
System.out.println("이어서 내가 좋아하는 요리 레시피를 한 문장씩 입력합니다. 입력을 마쳤으면 마지막에 ‘끝’을 입력하세요.");
int recipeNumber = 1; // 레시피 번호를 1로 초기화합니다.
// 선택한 자료구조에 따라 데이터를 저장하는 방법이 다릅니다.
if (dataStructure.equalsIgnoreCase("Map")) {
// 사용자가 Map을 선택한 경우, LinkedHashMap에 레시피를 저장합니다.
LinkedHashMap<Integer, String> map = (LinkedHashMap<Integer, String>) dataStructureInstance;
while (true) {
// 사용자로부터 레시피 한 줄을 입력받습니다.
System.out.print("레시피를 입력하세요 (끝 입력으로 종료): ");
String line = scanner.nextLine().trim();
if (line.equals("끝")) {
// 사용자가 "끝"을 입력하면 입력을 종료합니다.
break;
}
// 레시피를 Map에 저장합니다. 키는 recipeNumber, 값은 사용자가 입력한 레시피입니다.
map.put(recipeNumber++, line);
}
} else {
// 사용자가 List나 Set을 선택한 경우, 해당 자료구조에 레시피를 저장합니다.
Collection<String> collection = (Collection<String>) dataStructureInstance;
while (true) {
// 사용자로부터 레시피 한 줄을 입력받습니다.
System.out.print("레시피를 입력하세요 (끝 입력으로 종료): ");
String line = scanner.nextLine().trim();
if (line.equals("끝")) {
// 사용자가 "끝"을 입력하면 입력을 종료합니다.
break;
}
// 레시피를 List나 Set에 추가합니다.
collection.add(line);
}
}
// 사용자가 입력한 요리 제목과 자료구조 이름을 출력합니다.
System.out.printf("[ %s 으로 저장된 %s ]%n", dataStructure, title);
// 사용자가 입력한 레시피를 저장된 자료구조에서 하나씩 꺼내어 출력합니다.
if (dataStructure.equalsIgnoreCase("Map")) {
// Map에 저장된 경우, 키(번호)와 값(레시피)를 출력합니다.
LinkedHashMap<Integer, String> map = (LinkedHashMap<Integer, String>) dataStructureInstance;
for (Map.Entry<Integer, String> entry : map.entrySet()) {
// entry.getKey()로 번호를, entry.getValue()로 레시피를 출력합니다.
System.out.printf("%d. %s%n", entry.getKey(), entry.getValue());
}
} else {
// List나 Set에 저장된 경우, 저장 순서에 따라 번호를 붙여 출력합니다.
Collection<String> collection = (Collection<String>) dataStructureInstance;
int number = 1; // 출력할 번호를 1로 초기화합니다.
for (String recipe : collection) {
// recipe 변수에 저장된 값을 순서대로 출력합니다.
System.out.printf("%d. %s%n", number++, recipe);
}
}
scanner.close();
}
}
여기서 나는 Map과 Set을 모르겠어서 위에 링크 두개를 찾아보았다.
튜터님께
내가 전공이 아예 다른 초심자분이 힘들다고 이야기할때
어찌 답변했는 지 생각해보았다고 얘기했다
나는 보통 내가 C언어 부터 공부해서 기초쌓은게 자바를 조금더 빨리 습득하는데 도움된거 같아서
C 한번 봐봐라 라고 다른 분이랑 방금 한분께 추천했는데
내가 뭐라고 이런게 좀 쌓이고 쌓여서 다른분께 좋지 못한 영향을 줄꺼 같아서
C 먼저 공부하는 것에대해 견해를 물어봣는데
튜터님은 딱히 필요도 없을뿐더러(물론 그 C관련 개념을 알면 이해를 빨리 하겠지만)
선부른거 같다고 돌려서 말해주셨다
그래서 좀 조심해야겠다 남한테 조언을 가장한 내 할말 하는 것에 대해서 조심해야겠다고 생각했다.
그리고 누구한테 말하신건지 여쭤보길레
메모후 지난번처럼 총괄매니저님께 보고글 들어갈까봐
아앗 여담으로만 남겨달라고 마인딩해서 시정하겠다고 얘기했다
'TIL > 스파르타 TIL' 카테고리의 다른 글
[TIL] 스파르타코딩 2차 팀편성, 5일차 (0) | 2024.09.06 |
---|---|
[TIL] 스파르타코딩 2차 팀편성, 4일차 (0) | 2024.09.05 |
[TIL] 스파르타코딩 2차 팀편성, 2일차 (0) | 2024.09.03 |
[TIL] 스파르타코딩 2차 팀편성, 1일차 (0) | 2024.09.02 |
추가스터디-토요일zep (0) | 2024.08.24 |