TIL(2023.07.31)

JAKE·2023년 7월 31일

TIL

목록 보기
13/48
post-thumbnail

🏃‍♂️What I learned

1. 자료 구조

데이터을 어떻게 저장하고 처리할 것인지에 대한 구조적인 형태를 의미

e.g. )
   스택(Stack) : 후입 선출 방식 (뒤로가기, undo)
   큐(Queue) : 선입 선출 방식

어떤 프로그램을 제작하고, 데이터를 다루는지에 따라 적합한 자료구조의 형태를 취하는 것이 중요함
: 메모리의 효율적인 사용, 클린 코드 작성 등 필수적으로 공부해야할 부분..

자바에서의 큰 범주의 자료구조 형태 - List, Set, Map


2. Collection 中 List

1) 자료를 순차적으로 나열한 구조(배열과 유사)

2) 10개의 인덱스가 자동 생성

3) List의 종류
   ① ArrayList : 검색, 조회에 효율적
   ② LinkedList : 추가, 수정, 삭제 등에 효율적
   ③ Vector

4) List 선언 방법

e.g. )
[private] List<Student> studentList = new LinkedList<Student>();
//  List가 부모, LinkedList가 자식 
//  LinkedList의 자료구조인 studentList를 생성  

5) generics(제네릭) : '< >'에 위치 컬렉션에 저장되는 객체 타입을 한가지로 통일

'< >' 안의 객체타입만 저장 가능 → 객체 타입이 적절한지 검사할 필요가 없다.

6) List 주요 메소드
   ① 객체 추가 : add
   ② 객체 교체 : set
   ③ 포함 여부 확인 : contains
   ④ 저장 객체 리턴 : get
   ⑤ 비어있는지 확인 : isEmpty
   ⑥ 객체 수 확인 : size
   ⑦ 객체 삭제 : remove

e.g.)

studentList.add(new Student(name, age, region, gender, score));
// --------------------------------------  객체 추가 (add)

studentList.set(input, new Student(name, age, region, gender, score));
// --------------------------------------  객체 교체 (set)

System.out.print("학생 이름 입력 >> ");
String input = sc.next();
        
for(Student std : studentList) { // 향상된 for문(for each)
	if(std.getName().contains(input)) {
		System.out.println(std + "\n");
	} 
// --------------------------------------  포함 여부 확인 (contains)

          
System.out.print("학생 이름 입력 >> ");
String input = sc.next();

for(Student std : studentList) {
	if(input.equals(std.getName())) {
		System.out.println(std + "\n");
	}
// -------------------------------------- 저장 객체 리턴 (get)              

if(studentList.isEmpty()) {
	System.out.println("학생 정보가 없습니다.");
}
// -------------------------------------- 비어있는지 확인 (isEmpty)

System.out.print("정보 제거를 원하는 학생의 인덱스 번호를 입력하세요 >> ");
int input = sc.nextInt();
		
if (input < 0 || input >= studentList.size()) {
	return "잘못 입력하셨습니다.";
}
// -------------------------------------- 객체 수 확인 (size)

System.out.println(studentList.get(input) + "\n");
	System.out.print("정보 제거를 진행하시겠습니까?(y/n) >>");
	char input2 = sc.next().toUpperCase().charAt(0);
				
	if (input2 == 'Y') {	
		studentList.remove(input);
		return "\n정보 제거 완료!\n";
    }
// -------------------------------------- 객체 제거 (remove)

0개의 댓글