묻고 답해요
143만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 실전 자바 - 중급 2편
섹션 9. 문제와 풀이1
public static void main(String[] args) { String text = "Orange banana apple apple banana apple"; //코드 작성 String[] textArr = text.split(" "); System.out.println(Arrays.toString(textArr)); Map<String, Object> map = new HashMap<>(); for (String string : textArr) { map.put(string, 0); } for (String key : textArr) { if (map.containsKey(key)) { map.put(key, (map.get(key) + 1)); } } System.out.println(map); }문제와 풀이1에 3번째 문제입니다!Map<String, Object> map = new HashMap<>();HashMap을 생성 할 때, 값을 받는 부분은 뭐가 들어갈 지 몰라서 Object를 넣었습니다.코드를 진행하면서 for (String key : textArr) { if (map.containsKey(key)) { map.put(key, (map.get(key) + 1)); } }의문이 생긴 건 이 부분입니다.map.put(key, (map.get(key) + 1));여기서 오류, 빨간줄이 나왔습니다.-> 오류: java: bad operand types for binary operator '+'first type: java.lang.Objectsecond type: int map을 생성할 때, key는 String으로 받고,value는 Object로 받는다고 선언했는데 왜 오류가 뜨는 건가요?map.get(key) + 1은 int타입으로 나오는데 오토박싱으로 Integer 타입으로 변환되고, Object에 들어갈 수 있지 않나요?오토박싱이 안 되는 건가 해서 Integer.valueOf()를 써봐도 안 되더라구요..ㅠㅠ 물론 선언하는 부분에서 Object를 Integer로 바꾸면 해결이 되기는 합니다만..왜 오류가 나는지 모르겠습니다ㅠㅠ
-
해결됨코딩테스트 [ ALL IN ONE ]
스택 안에 왜 -1과 1이 들어가는지 궁금합니다.
안녕하세요 코딩 테스트를 공부하고 있는데 이해가 안 되는 부분이 있어 글을 올립니다.5행에 있는[-1]이 cur_day를 가리키고[1]이 cur_temp를 가리키는 걸로 이해를 하고 있습니다.궁금한 점: 제가 이해한 부분이 맞는다면 왜 스택 부분에 -1과 1이 들어가는지 궁금합니다.
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지
shallow copy를 쓰긴하나요?
쓰는 곳이 있나요? 예시가 생각이 나지않네요. assingment랑 비슷하면서 다르긴 하나. assignment는 복사란 개념보단 직접 그 point한 메모리안의 값을 assign 한다는 의미로 받았고. shallow copy 는 새로운 메모리 공간 안에 값들을 복사 하고자(reference value)하는 memory의 address를 point해서 reference 값을 가져온다는 의미로 이해했습니다.shallow copy를 했을 때랑 assignment 했을 때랑 =, [:]말곤 차이를 잘 못느끼겠습니다. 다른 건 그냥 assign하는 memory address만 다르다로만 이해했습니다. hard copy는 새로운 memory안에 복사 하고자 하는 값도 똑같이 복사한다는 걸로 이해했습니다.
-
미해결김영한의 실전 자바 - 중급 2편
9강 map과 set && duque Peek()
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]9강을 들으면서 두가지의 궁금증이 생겼습니다. Hashset이 내부에서 Map을 이용한다고 하셨는데, hashSet은 콜렉션이고 map은 아닐 수 있는 지 궁금합니다. stack이랑 queue를 둘 다 deque를 사용하여 구현한다고 하셨는데 이때 peek() 함수의 결과가 똑같은 deque를 사용해도 다른 걸 확인 했습니다. 이게 어떨 때는 stack 구조인지 어떨 때는 queue 구조인지 어떻게 알고 peek()을 해주는 건가요?입력 할 때 offer와 push를 사용하는 것에 대한 차이를 인지하고 다르게 출력하는 걸까요?
-
해결됨김영한의 실전 자바 - 중급 2편
섹션 8。map1
Map<String, Integer> studentMap = new HashMap<>(); . . . Collection<Integer> values = studentMap.values();studentMap.values()를 하면 Collection타입으로 반환해준다고 하셨는데 의문이 하나 들었습니다.Collection은 인터페이스, map은 Collection을 상속받지 않음으로 Collection은 studentMap.values()를 담을 수 없지어야 한다고 생각했는데... 모르겠습니다ㅠㅠ
-
해결됨김영한의 실전 자바 - 중급 2편
섹션 7 . 문제와 퓨리1
Set<Integer> set = new TreeSet<>(List.of(30, 20, 20, 10, 10));set에 값을 넣을 때, List는 전달 할 수 있다고 하셨는데,List.of();를 사용하면 ()안에 값을 List에 넣는 거고,List의 타입은 Set<Integer>를 보고 Integer로 타입추론을 하게되고,List<Integer>이기 때문에 ()안에 들어간 int형 (30, 20, 20, 10, 10)은 오토박싱이 돼서int -> Integer 타입으로 변경되서 List에 들어간다.제가 이해한 게 맞나요??ㅠㅠ
-
해결됨김영한의 실전 자바 - 중급 2편
타입 이레이저 질문
제가 실습했던 컴파일된 AnimalHospitalV3.class 파일을 인텔리제이에서 복호화해서 보면타입 매개변수인 T와 같은 표현이 살아있는데 왜 그런 것일까요? 컴파일 후라면 클래스명이 AnimalHospitalV3<T extends Animal>이 아니라AnimalHospitalV3 로 바뀌어 있어야할 것 같아서요. 글구 T들은 Object로 변해있어야 할 것 같은데...궁금합니다
-
해결됨김영한의 실전 자바 - 중급 2편
Generate로 hash 생성시, hash()와 hashCode()
Generate를 이용해서Hash 생성시@Override public int hashCode() { return Objects.hashCode(id); }와 같이 영상과는 달리 hash()가 아닌 hashCode()가 생성되어 결과물이 미묘하다 다릅니다.검색해보니, hash가 hashCode 배열 처리된 걸로 알고 있어서 차이가 있다는 건 알겠는데@Override public int hashCode() { return Objects.hash(id); }일부러 Code를 삭제해서 영상처럼 위와 같이 실무에서도 hash를 기반으로 사용할지, 아니면 IDE에서 기본으로 제공하는 대로 hashCode를 사용해도 딱히 상관이 없나요?
-
미해결김영한의 실전 자바 - 중급 2편
섹션 7. onlyHash
hashCode만 오버라이딩으로 재정의하면 해시코드는 같아지지만, 결국 equals비교 Object의 것을 사용해서 실패하게 된다고 하셨습니다.그런데 MemberOnlyHash 클래스에서 equals를 재정의를 했다고 가정했을 때, 어떻게 MemberOnlyHash로 갈 수 있는 건가요?오버라이딩 되어서 우선권을 갖고있는 건 알고있습니다.이해가 안 가는 부분을 어떻게 말을 해야 할 지 조금 복잡하지만... 1번 코드MyHashSetV2 set = new MyHashSetV2(10); NoEqualsOnlyHash m1 = new NoEqualsOnlyHash("A"); set.add(m1);1번 코드에서 set에서 add를 호출합니다. 2 코드public boolean add(Object value) { LinkedList<Object> bucket = buckets[hashIndex(value)]; if (bucket.contains(value)) { return false; }그리고 2번 코드에 들어가게 되고 3번 코드 public boolean add(MemberOnlyHash m1) { LinkedList<Object> bucket = buckets[0]; if (bucket.contains(m1)) { return false; }그러면 2번 코드가 실행되면 3번 코드처럼 되는 거라고 이해하고 있습니다. (hashIndex는 편의상 0이라고 하겠습니다.) 0번 인덱스에 있는 LinkedList <Object> 타입의 연결리스트가 나옵니다. 다음으로 if문으로 들어갑니다. 그리고 LinkedList <Object> 타입의 연결리스트(bucket)가(이) m1을 포함하는지 contains 메서드를 통해서 확인합니다. 여기서 질문입니다.질문 1 : MemberOnlyHash 타입의 m1과 비교를 하는데 bucket은 여전히 Object타입입니다. (Object)bucket이 contains를 사용하는데 bucket은 MemberOnlyHash 클래스가 오버라이딩 한 것을 어떻게 알고 찾아가는지 이해가 되지 않습니다.
-
해결됨김영한의 실전 자바 - 중급 2편
섹션 7. 직접 구현하는 Set3
여기에서 hashCode의 값이 선생님과 다르게 출력되는데 잘못된 게 맞나요?문자 고유의 값이니까 같은 문자라면 어느 컴퓨터나 같은 hashCode가 출력되야 하는 게 맞는거죠??public class MyHashSetV2Main2 { public static void main(String[] args) { Member hi = new Member("hi"); Member jpa = new Member("JPA"); // 대문자 주의! Member java = new Member("java"); Member spring = new Member("spring"); System.out.println("hi.hashCode() = " + hi.hashCode()); System.out.println("jpa.hashCode() = " + jpa.hashCode()); System.out.println("java.hashCode() = " + java.hashCode()); System.out.println("spring.hashCode() = " + spring.hashCode()); MyHashSetV2 set = new MyHashSetV2(10); set.add(hi); // Member 타입의 인스턴스를 myHashSetV2에 넣음. set.add(jpa); set.add(java); set.add(spring); System.out.println("set = " + set); //검색 Member searchValue = new Member("JPA"); boolean result = set.contains(searchValue); System.out.println("hi.contains(" + searchValue + ") = " + result); } //출력 결과 hi.hashCode() = 3329 jpa.hashCode() = 73659 java.hashCode() = 3254818 spring.hashCode() = -895679987
-
미해결김영한의 실전 자바 - 중급 2편
제네릭 연습문제 2번
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.기본생성자를 생성안하니까 오류가 뜨는데 강사님 강의에는 기본생성자를 생성안해도 오류가 안뜨더라구요 toString이 역할을 대신한건가요? 1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결김영한의 실전 자바 - 중급 2편
linkedList는 deque 구현체입니까? 아니면 list 구현체입니까?
1. linkedList는 deque 구현체입니까? 아니면 list 구현체입니까?만일 LIst 구현체인것도 있고 Deque구현체인것도 있으면new LinkedList<>(); 했을때 부모로 덱과 리스트중 누구를 앞에 내세워야합니까?강의에서 linkedList보다 ArrayList가 더 빠르다 하셨는데 그럼 LinkedList 를 쓰는 자리에는 ArrayDeque를 쓰는게 일반적입니까?
-
해결됨김영한의 실전 자바 - 중급 2편
혹시 조건문에서 먼저 비교할 대상의 선점이 이유가 있나요?
[질문 내용]직접 구현하는 배열 리스트1 - 시작 8:25에서o를 중심으로if (o.equals(elementData[i])) { 조건문을 구현하셨는데, 저는 반대로if (elementData[i].equals(o)) {elementData[i]에서 동일한 결과문을 찾았습니다. 결과는 동일하지만, 순서에 우선순위가 있을까요?
-
미해결김영한의 실전 자바 - 중급 2편
직접구현하는 SET4 제네릭과 인터페이스 도입
왜 hashIndex에서 Object 로 매개변수를 받나요?제네릭인 E로 받는게 타입안정성측면에서 좋지않나요??
-
미해결김영한의 실전 자바 - 중급 2편
오탈자가 있는데
별거아닌데문제와 풀이3 - Stackyoubute.com 수업자료에 그대로 있어서요
-
해결됨코딩테스트 [ ALL IN ONE ]
VS Code 사용법
안녕하세요.훌륭한 강의 잘 듣고 있습니다. 코테가 처음이고, VS Code 또한 처음 사용하다보니Break point 찍는 지점, .py 생성 등 모든 것이 익숙치않고 헷갈리네요.코테 연습할 때 VS Code를 효율적으로 사용할 수 있는 방법에 대한 강의는 찍으실 생각 없으실까요?
-
해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)
data 매개변수 오류
removeHelper 함수에서 data는 잘못 작성된 것이니 매개변수에서 제외해도 좋다고 하셨는데제외 후 테스트하면 remove 부분의 removeHelper 함수에서 parentNode.getLeftSubTree is not a function 라는 오류가 뜨네요.제가 잘못 작성한 부분이 있을까봐 binaryTree.mjs, avlTree.mjs 모두 첨부해주신 파일로 복붙해서 테스트해도 같은 오류가 떠요어떤 부분이 잘못된걸까요?
-
해결됨김영한의 실전 자바 - 중급 2편
굳이 out으로 안하고 해도 되지 않을까 싶어서요
[질문 내용]따로 Shuttle에 out 을 만들어서 T unit에 넣어서 sout으로 입력해 출력하는 것이 아니라public static <T extends BioUnit> void printV1(Shuttle<T> t) { t.showInfo(); } public static void printV2(Shuttle<? extends BioUnit> t) { t.showInfo(); }이렇게 출력해도 동일하지 않을까 싶어 여쭈어봅니다.
-
해결됨김영한의 실전 자바 - 중급 2편
섹션 4. 직접 구현하는 연결 리스트 제네릭 도입
제네릭은 new를 하면 타입 이레이저 때문에 Object가 되어버려서 new를 할 수 없다고 하셨는데,Node<E> newNode = new Node<>(e);이것도 E부분이 Object로 변하니까 new 생성을 못하는 이거는 왜 가능한 건지 이해가 되지 않습니다 ㅠ public class MyLinkedListV3<E> { private Node<E> first; private int size = 0; public void add(E e) { Node<E> newNode = new Node<>(e); if (first == null) { first = newNode; } else { Node<E> lastNode = getLastNode(); lastNode.next = newNode; } size++; }
-
미해결김영한의 실전 자바 - 중급 2편
런타임 의존관계
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]배치프로세서가 컴파일 시점에서는 mylist 인터페이스 의존을 하고 런타임에 생성자 주입을 한다고 하는 데 main 함수도 결국 컴파일 되는 것 아닌가요? 배치프로세서가 유연해 지는 건 이해할 수 있는 데 런타임시점에서 의존성이 주입된다는 부분이 좀 잘 이해가 안갑니다.