37일차

백엔드를 팝니다·2024년 8월 6일

개발자 수업

목록 보기
26/72

JAVA_STACK 및 함수소개

// TODO: 스택 ? 특이한 자료구조, ( LIFO : Last In First Out)
// => 밑이 막혀서 값을 꺼낼때 위에서 부터 꺼내는데 마지막에 들어간 값이 처음으로 나옴
// 대표적인 자료구조 : 1) 배열 :{값, ....} // 코딩테스트
// 2) List(향상된 배열) / Set(집합 구현) / Map(키, 값) //실무

// TODO: 예제) 스택에 값을 넣고 제일 위의 값을 출력하세요
// 사용법 : Stack<자료형> 변수 = new Stack<>();
Stack stack = new Stack<>();

// 스택 값 추가 : .push(값)
stack.push(new Coin(100)); // 제일 처음
stack.push(new Coin(50));
stack.push(new Coin(10)); // 제일 마지막

// 스택 제일 위의 값을 가져오기 : 변수.peek()
System.out.println(stack.peek()); // 항상 스택의 제일 위의 값 가져오기

// TODO: 큐(Queue) 자료구조? 특수한 자료구조 First In First Out

Queue queue = new LinkedList<>();

// TODO : 값 넣기 : 변수.offer(값);

queue.offer(1);
queue.offer(2);
queue.offer(3);
queue.offer(4); // 마지막 값

// TODO: 맨 앞의 값 확인하기
System.out.println(queue.peek());

//TODO: 값 꺼내기 : 변수poll()
queue.poll();
System.out.println(queue.peek());

// TODO: (기타,참고) Arrays 객체 / 함수 소개
// 활용 : 고전적 배열 - { 값, ....}
// TODO: 1) 배열 전체 출력 : Arrays.toString(변수)
int[] a= {1,2,3,4,5};

  System.out.println(a); // 메모리 방번호가 나옴
  System.out.println(Arrays.toString(a));

//간단연습 : 문자열 배열이 아래와 같습니다. 출력하세요

  String[] b = {"홍길동", "장길산"};
  System.out.println(Arrays.toString(b));

  

// TODO: 2) 배열에 특정 값으로 채우기 :
int[] arr = new int[5]; // 방예약 5개

  Arrays.fill(arr, -1);
  System.out.println(Arrays.toString(arr));
  
  

// 간단연습 : 아래 문자열 배열 값을 임꺽정으로 모두 채우세요
double[] arr2 = new double[5];

  Arrays.fill(arr2, 0.0);

System.out.println(Arrays.toString(arr2));

// TODO: 3) 내림차순/오름차순 정렬
// (코딩테스트용) : 2레벨 정도
// char(기본자료형) == Character(객체자료형) : 1문자형, 아스키코드(정수)
Character[] arr3 = {'A', 'C' , 'B'};

Arrays.sort(arr3); //오름차순(작은->큰) 정렬
System.out.println(Arrays.toString(arr3));

//간단연습 : 아래와 정수 배열이 있습니다. 오름차순 정렬 및 출력하세요

  int[] arr4 = {3,5,1,7};
  Arrays.sort(arr4);

System.out.println(Arrays.toString(arr4));

// TODO: 4)내림차순(큰-> 작은) 정렬;

Character[] arr5 = {'A', 'C' , 'B'};

Arrays.sort(arr5, Collections.reverseOrder());
System.out.println(Arrays.toString(arr5));

//간단연습 : 아래 정수 배열을 내림차순해서 출력하세요
Integer [] arr6 ={3,5,1,7};
Arrays.sort(arr6, Collections.reverseOrder());
System.out.println(Arrays.toString(arr6));

// TODO: 5) 값을 배열에서 특정 값 찾기(탐색) :
// => 5-1 ) 오름차순 정렬
//5-2 ) 찾기 함수 사용
Character [] arr7 = {'A', 'D' , 'C'};

Arrays.sort(arr7); //
int indexNumber = Arrays.binarySearch(arr7, 'D');
System.out.println(arr7[indexNumber]);

// TODO: Collections 객체 / 함수 소개
// => List / Set / Map 자료구조에서 사용

  List<Integer> list = new ArrayList<>();
  

// TODO: 1) List 에 값을 한번에 넣기
Collections.addAll(list, 1,2,3,4,5);
System.out.println(list); // ?

  List<String> list2 = new ArrayList<>();
   Collections.addAll(list2, "A","B","C","D","E");
  System.out.println(list2);
  

// TODO: 2) List 값을 오른쪽으로 회전시키기 :

// => [1,2,3,4,5] => [5,1,2,3,4]

  Collections.rotate(list, 1);

System.out.println(list);

//Collections.rotate(list, 2);
//System.out.println(list);

//간단연습 : List2 문자열 배열을 오른쪽으로 3개 회전 시켜보세요

Collections.rotate(list2, 3);
System.out.println(list2);

//TODO: 3) lIST 배열값을 서로 바꾸기(스왑:swap) :
// list : [5 , 1, 2, 3, 4]
Collections.swap(list, 0, 2);
System.out.println(list); //== > 2 , 1, 5, 3, 4

// TODO: 옵셔널(Optional) : null 에러 방지 객체(클래스), 래퍼클래스(박스)
// 자바의 문제점 : null 에러가 빈번하게 발생됨 -> 원인추적이 어려움
// => 파이썬(자바 다음에 나온 언어) : null 없앰, null 에러 없음
// => null 에러 방지 객체(클래스)

// TODO: 1) 옵셔널에 값넣기 : Optional<자료형> 변수 = Optional.of(값);
Optional a = Optional.of("abcde");

// TODO: 2) 옵셔널 값 꺼내기 : 옵셔널변수.get()
System.out.println(a.get()); // abcde

// TODO: 3) 옵셔널에 값이 있는지 확인? null 인지 아닌지 확인 ? 변수.isPresent()
if(a.isPresent() == true) {
System.out.println("값 있음");
} else {
System.out.println("값 없음");
}

// TODO: 4) null 있을경우 에러처리 방법
// => 사용법 : 변수.orElseThrow(()-> new Exception())
// => null 이 있으면 강제로 Exception 에러를 발생시킬 수 잇음
try {
Optional b = Optional.of(null);
String result = b.orElseThrow(()-> new Exception());
System.out.println(result);
} catch (Exception e) {
// TODO: handle exception
System.out.println("에러 발생");
}

}
}

// TODO: 제네릭(Generic) ? <자료형> , 자료형을 제한할 수 있는 기능
// 왜? : 배열에 무분별하게 여러 자료형을 넣는것을 방지하기 위해
//TODO: List<자료형> list = new ArrayList<>();
List list = new ArrayList<>();
list.add(1);//저장
//list.add("홍길동"); // 에러발생 : <정수> 자료형만 추가됨

profile
백엔드 고수가 되고싶은 사람

0개의 댓글