일단 씻고 나가자
23.03.08 본문
2023. 03. 08 수요일
- [Java] Set <-> 배열로 바꾸는 방법? Integer Set을 int형으로 바꾸는 방법?
: Set.toArray(new Ineteger[0]) // 원래는 괄호 안에 크기를 적어주어야 하지만,
저렇게 적으면 알아서 크기만큼 할당해 준다.
// 이때는 Integer[] 가 된다.
Set<Integer> set = new HashSet<Integer>(Arrays.asList(int[])); // 배열 -> Set
Arrays.stream(Set.toArray(new Integer[0])).mapToInt(Integer::intValue).toArray();
// Integer 값을 모두 int로 바꿔야 하므로 map을 이용.
https://gre-eny.tistory.com/25
- [Java] Collections의 sort 방법? 만약 숫자가 아니라면 sort하는 방법은?
: Collections.sort(List) 단, 이는 String이나 숫자에만 적용된다.
그렇다면 객체를 sort하는 방법은? Comparable 인터페이스를 구현하여 sort하는 방법이 있다. compareTo(T obj)를 오버라이딩하여 비교할 객체에 대한 비교 방법을 적어준다면 sort가 가능해진다.
작성 방법은 class 클래스명 implements Comparable<클래스명> 으로 클래스명에 명시하고 public int compareTo(클래스명 o)를 오버라이딩 하여, if(this.비교할 변수 > o.비교할 변수) return 0; 식으로 작성해주면 된다. 그럼 sort가 정상적으로 작동한다.
- [Java] throws의 역할? 설명? 예외 처리는 왜 필요할까? main throws Excpetion의미는?
: throws가 선언된 함수를 호출하는 사용자에게, 해당 예외가 나타날 수 있다는 강력한 암시를 주는 것. 해당 예외에 대응할 것을 강제하는 의미이다. 따라서 해당 함수를 사용하는 곳에서는 해당 예외에 대해 try-catch로 대응해주어야 하고, 해당 함수는 더 이상 해당 예외에 대해 try-catch로 대응할 필요 없다. throws는 여러 예외 클래스를 동시에 선언할 수 있다.
같은 에러를 띄우지만 에러를 띄우는 것과 경고 문구를 띄우는 것은 사용자에게 전혀 다른 결과를 보여준다. 경고문을 띄운다는 것은 해당 애플리케이션이 해당 에러에 대해 알고 있고 관리하고 있다는 뜻이므로 사용자의 체감이 달라진다.
main throws Exception은 JVM에게 예외를 던지겠다는 뜻이다.
- [Java] 람다식의 조건?
: 람다식에서 사용하는 레퍼런스는 단 하나의 추상 메서드만을 가지고 있는 인터페이스만을 사용할 수 있다. (이를 확인할 수 있는 어노테이션은 @FunctionalInterface. 익명 클래스의 조건과 다르다.) 이 조건을 통해 람다식을 이해할 수 있는 것은, 함수가 하나이기 때문에 함수명이 필요가 없고, 변수의 자료형을 굳이 사용할 필요가 없다는 것이다.
인터페이스 명 lambda = () -> { 반환 내용; }; // 매개변수 1개일 때는 () 생략 가능.
https://www.youtube.com/watch?v=uyPz5ekIxRY
- [Java] List, Set, Map 객체 생성 시 주의할 점?
: 셋 다 그대로 생성하진 못한다. List() l = new ArrayList()처럼, new 부분에 상속받은 객체를 생성해주어야 함.
- [Java] 컬렉션을 순차적으로 접근하는 방법은?
: Set, List의 경우 Iterator it = Set/List.iterator(); 로 선언 후
while(it.hasNext()) it.next(); 로 사용하고
Map의 경우 for-Each문으로 map.key/entrySet(), map.getKey/Value()를 사용.
- [Java] 컬렉션, 제네릭, 옵셔널이란?
: 컬렉션은 같은 타입의 여러 자료들을 규칙 있게 담아 놓는 구조 혹은 장소.
제네릭(Generic)이란 데이터 타입을 일반화한다는 뜻으로, <T>를 사용하여 특정 자료형에 국한되지 않은 클래스를 만드는 것을 의미.
옵셔널이란 NullPointException을 방지하기 위하여 만든 기능으로, 매번 if문으로 해당 객체가 Null인지 아닌지를 판별하는 수고를 덜기 위해 존재한다.
wrapper처럼, 옵셔널 객체 안에 어떤 객체를 넣으면 반대로 언래핑을 해주어야 정상적인 자료형 데이터로 활용할 수 있다. 중요 함수는 .empty(), .of(obj), .ofNullalbe(null), get(), orElseGet() 등이 있다.
https://learnote-dev.com/java/Java-%EC%98%B5%EC%85%94%EB%84%90/
- [Java] charArray를 String으로 바꾸는 법?
: String.valueOf(char[]) / String str = new String(char[]);
- 버전이란? (변화와의 차이) git에서 수행 방법?
: 유의미한 변화가 있는, 작업의 단위가 완결된 상태.
git commit 입력 후 vim이 실행되면 현재 변경된 어떤 점이 있는지 적는다. (commit 메시지) git add는 새로운 파일을 만들어 최초로 보낼 때와 버전을 최신화할 때 같은 명령어로 쓰이기 때문에 주의한다.
이후 git log 명령어를 입력하면 수정한 유저 정보와 버전 설명이 뜬다.
(git status는 현재 디렉토리의 파일들의 tracked 여부를 보여줌)
(vim f1.txt / vim 작성 (i 작성, :wq) / git commit / vim으로 commit 메시지 작성)